在一行中输入多个字符串,并在数组中输入一个sentinel值(java)



我试图在一个数组中输入多个字符串,但它们都必须在同一行上,并在输入sentinel值时停止。这就是我到目前为止所拥有的。

String [] courses = new String [5];
for (int k = 0; !(input.next().equals("xxx")); k++) {
courses[k] = input.next();
}   

for循环似乎没有循环,当我检查后面的数组时,它只会有"之前的最后一个字符串;xxx";,并且没有先前输入的那些。所有输入必须在一行上。

我假设您使用java.util.Scanner类来获取控制台输入,并且您有一个固定的数组。

上面的代码有两个主要问题:当使用next((方法时,它将读取一行,而这一行将消失。如果你有10个代币而不是5个,会发生什么?

String[] courses = new String[5];
for(int i = 0; input.hasNext(); i++) {
String token = input.next();
if ("xxx".equals(token)) {
break;
}
courses[i] = token;
}

在您的情况下,使用循环更好

String [] courses = new String[5];
int k = 0;
while(!(input.next().equals("xxx")) && k < 5) {
courses[k] = input.next();
k++;
}

最新更新