用于解决此java字符串和数字情况的简短代码

时间:2013-06-29 00:37:21

标签: java string

我遇到了这个问题,而用户需要在一个输入中输入一定数量的数字,然后程序将逐个输出数字。例如,用户输入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));
            }

    }
}

但是我认为它不是很有效,因为只做一个简单的任务需要很长时间。那么,你能提出一些更简单的建议吗?谢谢!

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

在扫描仪上设置分隔符并读取每个数字一个int

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

答案 2 :(得分:0)

这是我的想法:

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

如果您想忽略除号码以外的所有内容,可以使用"[^\\d]+"代替"\\s+"