/ / Грешка при стартиране, работи отлично при изграждането - java, runtimeexception

Грешка при работа, работи добре при изграждането - java, runtimeexception

Първо, това е за училищна паралелка. Това е моята програма:

import java.util.*;

public class Exitearly1 {
public static void main(String[] args) {
Scanner kbinput = new Scanner(System.in);
System.out.println("Please input your name: ");
String name = kbinput.next();
int count = 0;
while (count < name.length()) {
count++;
int res = name.charAt(count);
if ((res == "a") || (res == "A"))
continue;
System.out.println(name.charAt(count));
}
System.out.println("Name with no A"s");
}
}

Той отпечатва това, което въвеждам (Андреа), без A ", както предполагам, но след като вместо това отпечатам последния ред ми дава това в изхода:

n
d
r
e
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6
at java.lang.String.charAt(String.java:686)
at Exitearly1.main(Exitearly1.java:13)

Опитах много различни начини да го поправя, като нищо не го променя, идвам тук, защото попитах моя учител как да го поправя, а тя ми каза само какво не е наред с него, което вече знаех.

Отговори:

2 за отговор № 1

Повтаряте от позиция 1 към позицията name.length (), така че вие ​​излизате извън обхвата (тъй като stringvar.charAt (stringvar.length ()) винаги води до изключение извън обхвата.

Решението на Orel вероятно ще завърши в безкраен цикъл. Трябва да направите нещо подобно:

while (count < name.length())
{
int res = name.charAt(count);
if (( res !="a")&&(res !="A")) {
System.out.println(name.charAt(count));
}
count++;
}

Моля, обърнете внимание, че кодът ви никога не показва първата позиция на струната, независимо от това дали е "А" или нещо друго.


1 за отговор № 2

Докато други посочиха вашата грешка (виеувеличен брояч, преди да го използвате за четене на символ на позиция, описана от него) Бих предложил да се използва подобрен цикъл (може да итератира над масиви или екземпляри от класове, които реализира Iterable интерфейс), нещо като

for (char ch : name.toCharArray()){
if ((ch == "a") || (ch  == "A"))
continue;
System.out.println(ch);
}