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

时间:2014-10-15 12:31:35

标签: java loops dynamic input delimiter

我想输入一串数字,由",#34;分隔。我不知道会有多长时间。输入将传递给程序,并以字母" x"。

结束

JAVA!

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

}
}

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

试试这个

public static void main(String[] args) {
        int result = 0;
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the value");
        String string = sc.nextLine();
        string = string.replace("x", "");
        String[] strArray = string.split(",");
        for (String str : strArray) {
                result += Integer.valueOf(str);
        }
        System.out.println("Result is " + result);
    }

输入 1,2,3,4x

输出 Result is 10

答案 2 :(得分:0)

这也是一项工作。此外,它告诉用户预期输入的内容以及输入的列表是否与格式不匹配。

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