1

我遇到了这个问题,而用户需要在一个输入中输入某个系列的数字,然后程序将一个一个输出回数字。例如,用户输入 4 6 8,那么程序会输出 4 6 8 给用户。

我所做的代码是这样的:

import java.util.ArrayList;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        int N;
        String num;

        Scanner in = new Scanner(System.in);

            System.out.println("Enter number:");
            num = in.nextLine();

            ArrayList<Integer> numbers = new ArrayList<Integer>();

            for(int x = 0; x < num.length(); x++)
            {
               char c = num.charAt(x);

               if(Character.getNumericValue(c) >= 0 ){
                   numbers.add(Character.getNumericValue(c));
               }

            }

            for(int n=0; n<numbers.size(); n++){

                 System.out.println(numbers.get(n));
            }

    }
}

但我认为它不是很有效,因为它只是做一个简单的任务很长。那么,您能建议任何更简单的方法吗?谢谢!

4

3 回答 3

2

如果所有数字都在一行中,那么这可以解决问题:

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] tokens = reader.readLine().split(" ");
for (int i = 0; i < tokens.length; i++)
  System.out.println(Integer.parseInt(tokens[i]));

有关详细信息,请参阅BufferedReader

于 2013-06-29T00:53:45.410 回答
1

在 Scanner 上设置分隔符并读取每个数字

Scanner in = new Scanner(System.in);
in.useDelimiter("\\s");

System.out.println("Enter number:");
ArrayList<Integer> numbers = new ArrayList<Integer>();
while (in.hasNextInt()) {
    numbers.add(in.nextInt());
}
于 2013-06-29T01:09:16.540 回答
0

这是我的想法:

String num = "4 6 8";  // user's input
System.out.println(num.replaceAll("\\s+", "\n"));
4
6
8

如果您想忽略除可以使用的数字之外的所有内容,"[^\\d]+"而不是"\\s+".

于 2013-06-29T01:01:35.227 回答