There are multiple things wrong in your code..
mychar == ":"
should be mychar.equals(":")
instead. Since Strings are immutable, we need to use the .equals
to compare them instead of ==
(<- this checks if the references are equal instead of the String-values).
"cord1".charAt
should be your variable cord1.charAt
.. By using "cord1"
you basically create a new String with the value cord1
.
cord1.substring(a);
doesn't change the cord1
value, but returns a new String. So you'll have to save this String result, or print it, and then stop the loop with a break
.
- Using
cord1 = cord1.substring(a)
would shorten the String itself. Since you still loop in the range [0, c1)
where c1
was the original String, we would still get a StringIndexOutOfBoundsException. Instead, you don't need the else-case and need both the cord1 = cord1.substring(a)
and break
inside the if-case. (Also, I assume you want to remove the :
itself as well, so you'll have to use .substring(a+1)
instead.)
- Also, why use
String.valueOf( char )
instead of just using the char
themselves? Not really a requirement, but the String.valueOf
is kinda redundant here, and makes the code less readable.
Putting it all together:
public class Main {
public static void main(String[] args) {
String cord1 = "Name: x=23 y=60 z= 600";
System.out.println("cord1 before:\t" + cord1);
int c1 = cord1.length();
char mychar = cord1.charAt(0);
for (int a = 0; a < c1; a++){
mychar = cord1.charAt(a);
if (mychar == ':'){
cord1 = cord1.substring(a+1);
break;
}
}
System.out.println("cord1 after:\t" + cord1);
}
}
Which will result in cord1
having the value " x=23 y=60 z= 600"
(note the leading space) in the end.
Try it online.
Here is a much simpler alternative with the same result:
String cord1 = "Name: x=23 y=60 z= 600";
String cord1ExcludingName = cord1.replaceFirst("^.*:","");
Try it online.
^ : Only look at the start of the String for:
.* : Zero or more of any character,
: : followed by a `:`
Which will be replaced with ""
(an empty String), so they're basically removed.