[英]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.