Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一次接受多行输入_Java_Loops - Fatal编程技术网

Java 一次接受多行输入

Java 一次接受多行输入,java,loops,Java,Loops,所以我的问题是,我被第二个while语句挂断了。我应该允许用户输入多行输入(所有输入都同时给出),而while循环在使用所有输入后结束其自身。输入如下 限速是每小时40英里,但你的车速超过了65英里 99瓶 代码只使用第一个输入,然后关闭,当我使用scan.hasNextLine时,它将保持在一个无限循环中 public static void main(String[] args) throws IOException { Scanner scan = new Scanner(Syst

所以我的问题是,我被第二个while语句挂断了。我应该允许用户输入多行输入(所有输入都同时给出),而while循环在使用所有输入后结束其自身。输入如下

限速是每小时40英里,但你的车速超过了65英里

99瓶

代码只使用第一个输入,然后关闭,当我使用scan.hasNextLine时,它将保持在一个无限循环中

public static void main(String[] args) throws IOException {
    Scanner scan = new Scanner(System.in);
    Scanner scan2 = new Scanner(System.in);
    List<Integer> numbers = new ArrayList<>();
    Pattern p = Pattern.compile("([-+]?[0-9]+(?:\\.[0-9]+)?)");

    String phrase;
    String[] tens = { "Ten", "Twenty", "Thirty", "Fourty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" };
    String[] teens = { "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen",
            "Nineteen" };
    String[] ones = { "", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine" };

    phrase = scan.nextLine();

    Matcher m = p.matcher(phrase);
    while (m.find()) {
        numbers.add(Integer.parseInt(m.group()));

    }
    // Solve

    while (There is another line of input) {// i need some help here!!!
        for (int i = 0; i < numbers.size(); i++) {

            if (numbers.get(i) >= 20) {

                if (numbers.get(i) % 10 == 0) {
                    phrase = phrase.replaceAll(Integer.toString(numbers.get(i)),
                            tens[((numbers.get(i) - numbers.get(i) % 10) / 10) - 1]);
                } else {

                    phrase = phrase.replaceAll(Integer.toString(numbers.get(i)),
                            (tens[((numbers.get(i) - numbers.get(i) % 10) / 10) - 1] + "-"
                                    + ones[numbers.get(i) % 10]));
                }

            } else if (numbers.get(i) < 20 && numbers.get(i) > 10) {
                phrase = phrase.replaceAll(Integer.toString(numbers.get(i)), teens[(numbers.get(i) % 10) - 1]);

            } else if (numbers.get(i) < 10 && numbers.get(i) > 0) {
                phrase = phrase.replaceAll(Integer.toString(numbers.get(i)), ones[numbers.get(i)]);
            } else if (numbers.get(i) == 10) {
                phrase = phrase.replaceAll(Integer.toString(numbers.get(i)), "Ten");
            } else if (numbers.get(i) == 0) {
                phrase = phrase.replaceAll(Integer.toString(numbers.get(i)), "Zero");
            }

        }

    }
    System.out.println(phrase);
}
publicstaticvoidmain(字符串[]args)引发IOException{
扫描仪扫描=新扫描仪(System.in);
扫描仪scan2=新扫描仪(System.in);
列表编号=新的ArrayList();
Pattern p=Pattern.compile(([-+]?[0-9]+(?:\\\.[0-9]+)));
字符串短语;
字符串[]十={“十”、“二十”、“三十”、“四十”、“五十”、“六十”、“七十”、“八十”、“九十”};
字符串[]青少年={“十一”、“十二”、“十三”、“十四”、“十五”、“十六”、“十七”、“十八”,
“十九”};
字符串[]One={”、“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”};
短语=scan.nextLine();
Matcher m=p.Matcher(短语);
while(m.find()){
add(Integer.parseInt(m.group());
}
//解决
虽然(还有另一行输入){//我需要一些帮助!!!
对于(int i=0;i=20){
if(number.get(i)%10==0){
phrase=phrase.replaceAll(Integer.toString(numbers.get(i)),
十[((number.get(i)-number.get(i)%10)/10)-1]);
}否则{
phrase=phrase.replaceAll(Integer.toString(numbers.get(i)),
(十位数[((number.get(i)-number.get(i)%10)/10)-1]+“-”
+一[数字.get(i)%10]);
}
}else if(numbers.get(i)<20&&numbers.get(i)>10){
短语=短语.replaceAll(Integer.toString(numbers.get(i)),青少年[(numbers.get(i)%10)-1]);
}else如果(numbers.get(i)<10&&numbers.get(i)>0){
phrase=phrase.replaceAll(Integer.toString(numbers.get(i)),one[numbers.get(i)];
}else if(number.get(i)==10){
phrase=phrase.replaceAll(Integer.toString(numbers.get(i)),“十”);
}else if(number.get(i)==0){
phrase=phrase.replaceAll(Integer.toString(numbers.get(i)),“Zero”);
}
}
}
System.out.println(短语);
}
执行此操作

public static void main(String[] args) throws IOException {
    Scanner scanner = new Scanner(System.in);
    Pattern p = Pattern.compile("([-+]?[0-9]+(?:\\.[0-9]+)?)");

    String[] tens = {"Ten", "Twenty", "Thirty", "Fourty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};
    String[] teens = {"Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen",
        "Nineteen"};
    String[] ones = {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};

    String phrase = null;
    while (scanner.hasNextLine()) {
        phrase = scanner.nextLine();
        // if input is an empty line, exit from loop
        if (phrase.isEmpty()) {
            break;
        }

        List<Integer> numbers = new ArrayList<>();
        Matcher m = p.matcher(phrase);
        while (m.find()) {
            numbers.add(Integer.parseInt(m.group()));
        }

        for (int i = 0; i < numbers.size(); i++) {
            if (numbers.get(i) >= 20) {
                if (numbers.get(i) % 10 == 0) {
                    phrase = phrase.replaceAll(Integer.toString(numbers.get(i)),
                            tens[((numbers.get(i) - numbers.get(i) % 10) / 10) - 1]);
                } else {
                    phrase = phrase.replaceAll(Integer.toString(numbers.get(i)),
                            (tens[((numbers.get(i) - numbers.get(i) % 10) / 10) - 1] + "-"
                            + ones[numbers.get(i) % 10]));
                }
            } else if (numbers.get(i) < 20 && numbers.get(i) > 10) {
                phrase = phrase.replaceAll(Integer.toString(numbers.get(i)), teens[(numbers.get(i) % 10) - 1]);
            } else if (numbers.get(i) < 10 && numbers.get(i) > 0) {
                phrase = phrase.replaceAll(Integer.toString(numbers.get(i)), ones[numbers.get(i)]);
            } else if (numbers.get(i) == 10) {
                phrase = phrase.replaceAll(Integer.toString(numbers.get(i)), "Ten");
            } else if (numbers.get(i) == 0) {
                phrase = phrase.replaceAll(Integer.toString(numbers.get(i)), "Zero");
            }
        }
        System.out.println(phrase);
    }
}

你说“我应该允许用户输入多行内容(所有内容同时给出)”。因此,一段多行文本被粘贴到控制台中,然后按enter键,对吗?你试过在
hasNextLine()
之后再做一次
扫描.nextLine()
吗?忽略我之前的漫谈,有一点需要考虑:如果我的答案对你有帮助,你可以接受它作为答案。
The speed limit is 40 mph, but you were going over 65
The speed limit is Fourty mph, but you were going over Sixty-Five
99 bottles of ...
Ninety-Nine bottles of ...