1

私はこの問題に遭遇しましたが、ユーザーは1回の入力で特定の一連の数字を入力する必要があり、プログラムは数字を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

すべての数字が 1 行にある場合、これで問題を解決できます。

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 に区切り文字を設定し、各数値を 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());
}
于 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 に答える