所以我正在尝试编写代码来打印2个字符的字符串passCode中任何空格的位置。检测到的每个空格应打印一个单独的语句,后跟换行符。
我写了这段代码,直到passcode =“”;
public class space{
public static void main(String args[]) {
String passCode = "";
passCode = "A ";
int p = passCode.length();
/*
for(int i = 0; i < p; i++) {
int b = passCode.charAt(i);
if(Character.isWhitespace(b)){
System.out.println("Space at " + passCode.indexOf(b));
}
}
}
}
然而,如果passcode =“”,我找到了一种方法来正确评估 发布在下面
int indexOfSpace = passCode.indexOf(" ");
while(indexOfSpace >= 0){
System.out.println("Space at " + indexOfSpace);
indexOfSpace = passCode.indexOf(" ", indexOfSpace + 1);
}
有人可以向我解释为什么当while循环的两个索引都为空而不是for循环时它是否有效?
谢谢
答案 0 :(得分:1)
这有效,但非常简陋:
import java.util.Scanner;
public class FindSpaces {
public static void main (String [] args) {
String passCode = "";
passCode = "A ";
boolean whitespaceAtZero = false;
boolean whitespaceAtOne = false;
whitespaceAtZero = Character.isWhitespace(passCode.charAt(0));
whitespaceAtOne = Character.isWhitespace(passCode.charAt(1));
if (whitespaceAtZero) {
System.out.println("Space at 0");
}
if (whitespaceAtOne) {
System.out.println("Space at 1");
}
return;
}
}
答案 1 :(得分:0)
您的两个解决方案都是正确的,问题是您的打印报表。即:
int b = passCode.charAt(i);
System.out.println("Space at " + passCode.indexOf(b));
在这里,您要检索给定索引处的字符,但是在查找使用该字符时会出现问题。 indexOf(char)返回包含该字符的第一个索引。由于字符串具有两个相同的字符,因此它将始终返回此实例中的第一个索引。您应该打印出索引:
System.out.println("Space at " + i);