Home > database >  How can I get my output to be separated by commas based on user input from scanner?
How can I get my output to be separated by commas based on user input from scanner?

Time:03-08

I have a class which takes keyboard input, how could I go about making it so that it can take multiple double and char inputs on one line e.g. 1 2 a a a to then get the output:

"1","2","a","a","a" by splitting it into separate strings? this is what I've done so far:

public class MyInputInfo implements Comparable <MyInputInfo> {

public static double numeric;
public static char symbol;

public MyInputInfo(double numeric, char symbol) {
    this.numeric = numeric;
    this.symbol = symbol;

}
public static char getSymbol() {
    int asciiValue = 97;

    for (int i = asciiValue; i <= 122; i  ) {
        String convertedChar = Character.toString ((char) i);
        System.out.println (convertedChar);
    }
    return symbol;
}
@Override
public int compareTo(MyInputInfo o) {
    if (this.numeric < o.numeric) {
        return 1;
    } else if (this.getSymbol( ) < o.getSymbol ( )) {
        return -1;
    } else {
        return 0;
    }
}
@Override
public String toString() {
    return "Numeric "   numeric   " Symbol "   symbol;
   }

}

the class im working on right now

import java.util.*;


public class MyKeyboardInput {

public static void main(String[] args) {

    Scanner s = new Scanner (System.in);

    MyInputInfo.numeric = s.nextDouble();

    MyInputInfo.symbol = s.next ( ).charAt (0);

    System.out.println (MyInputInfo.numeric  ","   MyInputInfo.symbol);




        }
    }

I'm new to java so apologies for coming off as slow. All help is appreciated!

CodePudding user response:

There are two options:

  1. Obtain numbers and chars in predictable order
  2. Obtain numbers and chars in random order

Obtain numbers and chars in predictable order

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("Enter number of iterations: ");
    int count = scanner.nextInt();
    
    StringBuilder buffer = new StringBuilder();
    for (int i = 0; i < count; i  ) {
        System.out.print("\nEnter a floating point number: ");
        buffer.append(scanner.nextDouble()   " ");
        System.out.print("\nEnter a character: ");
        buffer.append(scanner.next().charAt(0)   " ");
    }
    scanner.close();
    String output = buffer.toString().trim().replaceAll(" ", ", ");
    System.out.println(output);
}

If you enter 1 a 2 b 3 c 4 d 5 e, the output will look like this

1.0, a, 2.0, b, 3.0, c, 4.0, d, 5.0, e

It's really that simple. The key is to use StringBuilder to "stage" the input and then convert all of the individual inputs into a single String output. To make it easier to remove the last comma, I just separated the entries by spaces, trimmed the string to remove the last space, and then prepended the remaining spaces with a comma.

Obtain numbers and chars in random order

This solution is similar, but in this case, just capture the input as a String and then figure out if the input is numeric or not. If it is not numeric, then it is a character.

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("Enter number of iterations: ");
    int count = scanner.nextInt();
    
    StringBuilder buffer = new StringBuilder();
    for (int i = 0; i < count; i  ) {
        System.out.print("\nEnter a number or character: ");
        String s = scanner.next();
        try {
            Double num = Double.parseDouble(s);
            buffer.append(num   " ");
        } catch (NumberFormatException nfe) {
            buffer.append(s.charAt(0)   " ");
        }
    }
    scanner.close();
    String output = buffer.toString().trim().replaceAll(" ", ", ");
    System.out.println(output);
}

Caveats

You need to figure out what to do when something like "character" is provided as input. As you can see in the code, the code captures only charAt(0). This might or might not be correct for your use. But, this is typically how it is portrayed on the web how to get character from Scanner in Java.

Also, there is no error handling on the first solution if the input is not a number. You could try to prompt again if the character entered is not a number. Likewise, when prompted to enter a character, what happens if the input is a number? You will need to tweak the code to do what you want. With the second approach, you don't have to worry about this.

  •  Tags:  
  • java
  • Related