使用char和integers从用户获取多个输入

时间:2019-01-14 17:11:54

标签: java arrays user-input

我正在尝试允许用户输入来自用户的多个输入,其中包含char和整数。 像这样的输入:A 26 16 34 9 并将每个添加到数组的int输出。 我以为我可以将第一个输入作为字符,然后将其余输入作为字符串读取,然后我将其分离并放入数组中。 我不是编码新手,而是Java新手。我一直在做c ++,所以语法有点不同。  到目前为止,这是我的工作,我还没有为整数设置数组。

import java.util.Scanner;

public class Program0 {
    public static void main(String[] args) {
        int firstNumber;

        Scanner reader = new Scanner(System.in);

        System.out.println("'A' to enter a number. 'Q' to quit");

        int n = reader.nextInt();
        if (n=='A') {
            //if array is full System.out.println("The list is full!");

            //else
            System.out.println("Integer " + "  " + "has been added to the list");
        }
        else if (n=='Q') {
            System.out.println("List of integers: ");

            System.out.println("Average of all integers in the list: ");

        }
        else{
            System.out.println("Invalid Action");

        }
        reader.close();
    }

}

3 个答案:

答案 0 :(得分:0)

您能否指定更好的输入方式?从您的问题来看,如果我理解的很好,用户只需键入“ A”,然后键入一个用空格分隔的数字列表。因此,我只需要阅读下一行,将其分成多个单词(用空格隔开),然后检查第一个单词是否为字母“ A”。在这里:

import java.util.Scanner;

public class Program0 {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);

        System.out.println("'A' to enter a number. 'Q' to quit");

        String line = reader.nextLine();
        String[] words = line.split(" ");

        if (words.length > 0 && words[0].equals("A")) {
            //if array is full System.out.println("The list is full!");
            // => I don't understand this part

            //else
            for(int i = 1; i<words.length; i++){
                int integer = Integer.parseInt(words[i]);
                System.out.println("Integer " + integer + " has been added to the list");

                //do your stuff here
            }
        }
        else if (words.length > 0 && words[0].equals("Q")) {
            System.out.println("List of integers: ");

            System.out.println("Average of all integers in the list: ");

        }
        else{
            System.out.println("Invalid Action");

        }
        reader.close();
    }

}

请注意,在解决方案中,您从扫描仪读取了下一个整数,然后尝试将其与字符'A'进行比较。由于A不是整数,因此无法使用。如果您真的想从扫描仪中获取第一个字符,可以执行以下操作:

String line = reader.nextLine();
if(line.length() > 0){
    char firstChar = line.charAt(0);
    //do your stuff here
}

答案 1 :(得分:0)

字符不是整数。您无法读取int来期望类似“ A”的内容。您可以读取String并采用其第一个字符。扫描程序没有提供一种方便的方法来读取下一个String并期望它只有一个字符长。您需要自己处理。

但是考虑到您事先不知道将要读取多少个数字,那么阅读整行并完全解释该行的解决方案是更好的选择。这意味着您不能使用nextInt(),nextDouble(),next()或nextWhateverElse()。

您需要nextLine(),它将以String的形式显示整行。

然后,您可以分割()结果,并检查第一个是否为一个字符长。然后,您可以将所有其他解析为int。

答案 2 :(得分:0)

我不会立即回想起如何用Java编写代码-已经有一段时间了-但是我要做的是先用空格分隔字符串,然后尝试 ParseInt

如果字符串不是有效的整数,则此方法将throw引发异常,您可以捕获该异常。所以:

  • 如果转到下一条语句,则不会发生异常,因此该值是整数。

  • 相反,如果您发现自己处于异常处理程序中(已捕获[仅...]预期的异常类型,则该值为字符串。

  • 当然,不要“捕获”您期望的NumberFormatException以外的任何异常类型。

顺便说一句,以这种方式使用异常是完全正常的。让Java的运行时引擎来决定是否为整数。