要求用户进行多次输入

时间:2014-02-20 18:52:48

标签: java java-io

我正在尝试编写一个程序,它会一直询问用户一个整数,直到他们输入一个非整数的值,此时程序停止。

这是我到目前为止所做的:

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

可能是什么问题?

2 个答案:

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