В вашем коде несколько ошибок ..
mychar == ":"
должно быть mychar.equals(":")
вместо. Поскольку строки неизменяемы, нам нужно использовать .equals
для их сравнения вместо ==
(<- проверяет, равны ли ссылки вместо строковых значений). </li>
"cord1".charAt
должна быть вашей переменной cord1.charAt
.. Используя "cord1"
, вы в основном создаете новую строку со значением cord1
.
cord1.substring(a);
не изменяет значение cord1
, но возвращает новую строку. Поэтому вам придется сохранить этот результат String или распечатать его, а затем остановить цикл с помощью break
.
- Использование
cord1 = cord1.substring(a)
приведет к сокращению самой строки. Поскольку вы продолжаете цикл в диапазоне [0, c1)
, где c1
была исходной строкой, мы все равно получили бы исключение StringIndexOutOfBoundsException. Вместо этого вам не нужен else-case, и вам нужны оба параметра cord1 = cord1.substring(a)
и break
внутри if-case. (Также я предполагаю, что вы хотите удалить и сам :
, поэтому вам придется использовать .substring(a+1)
.)
- Кроме того, зачем использовать
String.valueOf( char )
вместо того, чтобы просто использовать char
? На самом деле это не является обязательным требованием, но String.valueOf
в некотором роде избыточен и делает код менее читабельным.
Собираем все вместе:
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);
}
}
В результате cord1
будет иметь значение " x=23 y=60 z= 600"
(обратите внимание на начальный пробел) в конце.
Попробуйте онлайн.
Вот гораздо более простая альтернатива с тем же результатом:
String cord1 = "Name: x=23 y=60 z= 600";
String cord1ExcludingName = cord1.replaceFirst("^.*:","");
Попробуйте онлайн.
^ : Only look at the start of the String for:
.* : Zero or more of any character,
: : followed by a `:`
Что будет заменено на ""
(пустая строка), поэтому они в основном удалены.