我正在尝试编写一个程序,它会一直询问用户一个整数,直到他们输入一个非整数的值,此时程序停止。
这是我到目前为止所做的:
import java.util.Scanner;
import java.util.ArrayList;
public class InputStats {
private static Scanner a;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList InputArray = new ArrayList();
Boolean Running = true;
System.out.println("Please type an integer. To stop enter a non integer value");
while (Running) {
a = Scanner.nextLine();
if (!a.hasNextInt()) {
Running = false;
}
else {
InputArray.add(input.nextLine());
}
System.out.println(InputArray);
}
}
}
但是,使用此代码我收到了错误:
error: non-static method nextLine() cannot be referenced from a static context (for the line a = Scanner.nextLine();)
和
error: incompatible types (for the line a = Scanner.nextLine();)
可能是什么问题?
答案 0 :(得分:7)
String str = input.nextLine();
根本不需要扫描仪a。只需用对input
的引用替换它的所有引用。
答案 1 :(得分:0)
我通过创建一个函数来完成此操作,以查看String是否为数字。
import java.util.ArrayList;
import java.util.Scanner;
public class InputStats {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList<Integer> inputArray = new ArrayList<Integer>();
System.out.println("Please type an integer. To stop enter a non integer value");
boolean canContinue = true;
String a;
while(canContinue) {
a = input.next();
if(isNumeric(a) == true) {
int b= Integer.parseInt(a);
inputArray.add(b);
}
else {
canContinue = false;
}
}
System.out.println(inputArray);
input.close();
}
public static boolean isNumeric(String str) {
try {
int d = Integer.parseInt(str);
}
catch(NumberFormatException nfe) {
return false;
}
return true;
}
}