Search code examples
javaarraysuser-input

Getting multiple inputs from user with char and integers Java


I'm trying to allow the user to put in multiple inputs from the user that contain a char and integers. Something like this as input: A 26 16 34 9 and output each int added to an array. I was thinking I could have the first input as a character and then read the rest as a string which then I separate and put into an array. I'm not new to coding but new to java. I've been doing c++ so the syntax is a bit different. This is what I have so far, I haven't set up my array yet for the integers.

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

}

Solution

  • Could you specify better how should your input be given? From your question, if I understand well, the user simply type "A" followed by a list of numbers separated by a space. So I would simply read the next line, split it in words (separated by a space) and check if the first word is the letter "A". Here it goes:

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

    Note that in your solution, you read the next int from your scanner and then try to compare it with the character 'A'. This will not work because A is not an int. If you really want to get the first character from your scanner, you could do:

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