简体   繁体   English

用扫描仪循环

[英]Looping with scanner

I am trying to make a triangular numbers generator that asks the user how many triangular numbers it would like them to generate.我正在尝试制作一个三角形数生成器,询问用户希望他们生成多少个三角形数。 These are my errors:这些是我的错误:

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at TriangularNumbers.main(TriangularNumbers.java:11)


    import java.util.Scanner;

    public class TriangularNumbers {
        public static void main(String args[]) {
            while(true){
                long tnumber = 1L;
                long amount = 2L;
                System.out.println("Welcome to the triangular numbers           calculator!");
                System.out.println("Type in the amount of triangular numbers to be generated!");
                Scanner reps = new Scanner(System.in);
                long repeats = reps.nextInt();
                reps.close();
                long i = 0L;
                while (i < repeats) {
                    i = i + 1;
                    System.out.println(i + ". " + tnumber);
                    tnumber = tnumber + amount;
                    amount = (amount + 1);
                }
                System.out.println("Done generating!");
            }
        }

    }

Everything works fine until it reaches the stage of the second user input.一切正常,直到到达第二个用户输入的阶段。

Why cant you try this way.?为什么你不能尝试这种方式。?

import java.util.Scanner;

public class TriangularNumbers {
    public static void main(String args[]) {
        Scanner reps = new Scanner(System.in);
        while(true){
            long tnumber = 1L;
            long amount = 2L;
            System.out.println("Welcome to the triangular numbers           calculator!");
            System.out.println("Type in the amount of triangular numbers to be generated!");

            long repeats = reps.nextInt();
            if(reps == 0L) break; //Considering reps ==0 as the terminating condition to get out of the loop
            long i = 0L;
            while (i < repeats) {
                i = i + 1;
                System.out.println(i + ". " + tnumber);
                tnumber = tnumber + amount;
                amount = (amount + 1);
            }
            System.out.println("Done generating!");
            reps.nextLine(); // Has to be there in case of run out of tokens
        }
        reps.close();
    }

}

Pleae change code like this:请像这样更改代码:

 long tnumber = 1L;
    long amount = 2L;
    System.out.println("Welcome to the triangular numbers           calculator!");
    System.out.println("Type in the amount of triangular numbers to be generated!");
    Scanner reps = new Scanner(System.in);
    long repeats = reps.nextInt();
    reps.close();
    long i = 0L;
    do {
        i = i + 1;
        System.out.println(i + ". " + tnumber);
        tnumber = tnumber + amount;
        amount = (amount + 1);
        System.out.println("Done generating!");
    } while (i < repeats);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM