代码之家  ›  专栏  ›  技术社区  ›  b w

用char和整数Java获取用户的多个输入

  •  0
  • b w  · 技术社区  · 6 年前

    我试图允许用户输入包含字符和整数的用户的多个输入。 像这样的输入: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 回复  |  直到 6 年前
        1
  •  0
  •   Ricola    6 年前

    你能更好地说明你的输入应该如何给出吗?从您的问题来看,如果我理解的很好,用户只需键入“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();
        }
    
    }
    

    请注意,在解决方案中,您从扫描仪中读取下一个int,然后尝试将其与字符进行比较。 'A' . 这不起作用,因为 A 不是int。如果确实要从扫描仪中获取第一个字符,可以执行以下操作:

    String line = reader.nextLine();
    if(line.length() > 0){
        char firstChar = line.charAt(0);
        //do your stuff here
    }
    
        2
  •  0
  •   kumesana    6 年前

    字符不是int。不能读取int以期望“a”这样的内容。不过,您可以读取一个字符串并获取它的第一个字符。扫描器不提供一种方便的方法来读取下一个字符串,并期望它只有一个字符长。你得自己处理。

    但是考虑到你事先不知道要读多少个数字,你阅读整行并完全解释它的解决方案是更好的。这意味着您不能使用nexttin()、nextdouble()、next()或nexthateverelse()。

    您需要nextline(),它将把整行作为一个字符串。

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

        3
  •  0
  •   Mike Robinson    6 年前

    我不记得如何在Java语言中写这个,它有一段时间,但是我首先要用空格分隔字符串,然后 尝试 ParseInt 每件。

    如果字符串 不是 一个有效的整数,此方法将 throw 一个例外,你可以理解。所以:

    • 如果您进入下一个语句,则不会发生异常,因此该值是一个整数。

    • 相反,如果您发现自己在异常处理程序中(捕获了[仅…]预期的异常类型,则该值是一个字符串。

    • 当然,除了 NumberFormatException 你所期待的。

    顺便说一下,是的 完美的常规 以这种方式使用异常。让Java的运行时引擎成为关于它是否是整数的权威。