扫描仪只读取第一组输入

时间:2013-10-27 22:36:56

标签: java input java.util.scanner

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

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

但是,它只读取字符串的第一个集合,而忽略其余部分。 我该如何解决这个问题?

2 个答案:

答案 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
}

希望这有帮助!