0

这是我开发的用于按块分隔输入的代码(到达空格时):

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);
    }
}

但是,它只读取字符串的第一组,而忽略其余的。我怎样才能解决这个问题?

4

2 回答 2

1

问题就在这里。你应该替换这一行

String numbers = in.next();

用这条线

String numbers = in.nextLine();

因为, next() 只能读取输入直到第一个space,而 nextLine() 可以读取输入直到newline字符。有关更多信息,请查看此链接

于 2013-10-27T23:27:05.077 回答
0

如果我正确理解了这个问题,您只需要调用一次 in.next() 。如果你想让它一遍又一遍地处理输入,你需要一个循环,直到你没有更多的输入。

while (in.hasNext()) {
    //do number processing in here
}

希望这可以帮助!

于 2013-10-27T22:48:13.663 回答