Итак, у меня есть следующие инструкции:
Write code to print the location of any space in the 2-character string passCode. Each space detected should print a separate statement followed by a newline. Sample output for the given program: Space at 1
Код, который я сейчас написал:
import java.util.Scanner;
public class FindSpaces {
public static void main (String [] args) {
String passCode = "";
passCode = "A ";
if (Character.isWhitespace(passCode.charAt(0))){
System.out.println("Space at " +passCode.indexOf(" "));
}
else if (Character.isWhitespace(passCode.charAt(1))){
System.out.println("Space at " +passCode.indexOf(" ", 1));
}
else{
}
return;
}
}
Теперь это иногда срабатывает, но если у меня более одного пробела во вводе, он всегда печатает только одну строку. Если это кому-то поможет, то это из zyBooks, и я понятия не имею, как заставить его отображать вторую строку, показывающую второй пробел.
Кроме того, это было бы немного проще в цикле for, если бы вы могли его использовать. Тогда вам понадобится только один if (Character.isWhitespace(passCode.charAt(i)) { S.o.p("Space at " + i);. Если вы можете использовать петлю for.




Хотя длина может быть ограничена двумя, я все же думаю, что цикл for подойдет лучше:
String passCode = "";
passCode = " ";
for (int i = 0; i < passCode.length(); i++) {
if (passCode.charAt(i) == ' ') {
System.out.println("Whitespace at index " + (i + 1));
}
}
Чтобы взглянуть на ваше решение: ваш код не может вводить какие-либо выходные данные более одного раза. У вас есть if () else () - просто удалите else, и все будет в порядке:
String passCode = "";
passCode = " ";
if (Character.isWhitespace(passCode.charAt(0))) {
System.out.println("Space at " + passCode.indexOf(" "));
}
if (Character.isWhitespace(passCode.charAt(1))) {
System.out.println("Space at " + passCode.indexOf(" ", 1));
}
Когда ты делаешь
if ( condition1 ) {
doSomething();
}
else if ( condition2 ) {
doSomethingElse();
}
else означает, что вы будете тестировать condition2 (и поэтому у вас есть шанс вызвать doSomethingElse()), только если condition1 ложный. Вам просто нужно удалить этот else из вашего кода.
Чтобы найти и распечатать расположение каждого пробела в строке, вы просто перебираете строку и проверяете, является ли текущий символ пробелом:
String str = "Find the space location";
for(int i = 0; i < str.length(); i++) {
if (Character.isWhitespace(str.charAt(i)) {
System.out.println("Space at " + i);
}
}
Добавление некоторых пояснений сделало бы этот ответ более полезным.
Используйте два if, а не else if, или цикл с одним if. Вам также не нужен блок else или оператор return, поскольку тип возврата
main-void.