这是我开发的用于按块分隔输入的代码(当到达空格时):
import java.util.Scanner;
public class Single {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.println("Three Numbers:");
String numbers = in.next();
int length = numbers.length();
System.out.println(length);
int sub = length - length;
System.out.println(sub);
System.out.println(getNumber(numbers, length, sub));
System.out.println(getNumber(numbers, length, sub));
System.out.println(getNumber(numbers, length, sub));
}
public static double getNumber(String numbers, int length, int sub){
boolean gotNumber = false;
String currentString = null;
while (gotNumber == false){
if (numbers.substring(sub, sub + 1) == " "){
sub = sub + 1;
gotNumber = true;
} else {
currentString = currentString + numbers.substring(sub, sub);
sub = sub + 1;
}
}
return Double.parseDouble(currentString);
}
}
但是,它只读取字符串的第一个集合,而忽略其余部分。 我该如何解决这个问题?
答案 0 :(得分:1)
问题出在这里。你应该替换这一行
String numbers = in.next();
这一行
String numbers = in.nextLine();
因为,next()只能读取输入直到第一个space
,而nextLine()可以读取输入直到newline
个字符。有关详情,请查看this link。
答案 1 :(得分:0)
如果我正确理解了这个问题,你只需要调用in.next()一次。如果你想让它一遍又一遍地处理输入,你需要一个循环,直到你没有任何更多的输入。
while (in.hasNext()) {
//do number processing in here
}
希望这有帮助!