有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何读取长度未知的用户输入?

我想输入一串数字,以“,”分隔。我不知道要多久。输入将被传递到程序,并以字母“x”结尾

爪哇

import java.util.Scanner;

public class fromUserSum {
/// input : 1,2,4x   from user
/// output : 7
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num;
        int sumTotal=0;
        while(scan.nextByte() != 'x') {
            num = scan.nextInt();
            sumTotal += num;
        }
        System.out.println(sumTotal);
        scan.close();
    }

}

请帮忙!:)

//////////////

public class fromUserSum {
/// input : 1,2,4x   from user
/// output : 7
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String userInput;

        do {
            System.out.println("Please enter a list of numbers in following format: 1,2,3,4x");
            userInput = scan.next();
        } while (!userInput.matches("(?:\\d+(?:,\\d+)*)x") || !userInput.matches("\\d+( \\d+)*x"));

        scan.close();
        String[] numberStrings;
        if (userInput.contains(",")) {
        numberStrings = userInput.replace("x", "").split(","); // 4x is now 4 and split by ','
        } else {
            numberStrings = userInput.replace("x", "").split(" ");
        }

        int sum = 0;
        for (String i : numberStrings) {
            sum += Integer.valueOf(i);
        }

        System.out.println("The sum of all numbers in the list is: " + sum);

}
}

共 (2) 个答案

  1. # 1 楼答案

    这也能起到作用。此外,它还告诉用户预期的输入以及输入的列表是否与格式不匹配

    public static void main(final String[] args) {
        final Scanner userInputScanner = new Scanner(System.in);
        String userInput;
    
        do {
            System.out.println("Please enter a list of numbers in following format: 1,2,3,4x or 1 2 3 4x");
            userInput = userInputScanner.nextLine();
        } while (!(userInput.matches("\\d+(,\\d+)*x") || userInput.matches("\\d+( \\d+)*x")));
    
        userInputScanner.close();
    
        final String[] numberStrings = userInput.replace("x", "").split("[, ]");
        int sum = 0;
    
        for (final String numberString : numberStrings) {
            sum += Integer.valueOf(numberString);
        }
    
        System.out.println("The sum of all numbers in the list is: " + sum);
    }
    
  2. # 2 楼答案

    import java.io.Console;
    import java.util.Scanner;
    class MainClass{
        public static void main(String args[]) {
            int sum=0;
            Console c=System.console();
            Scanner scan = new Scanner(c.readLine());
            scan.useDelimiter("[,x]");
            while(scan.hasNextInt())
                sum+=scan.nextInt();
            scan.close();
            System.out.print(sum);
        }
    }