web-dev-qa-db-ja.com

BufferedReaderオブジェクトを使用してJavaの1行から複数​​の整数値を読み取る方法は?

BufferedReaderクラスを使用してJavaプログラムの入力を読み取ります。スペースを使用して1行に複数の整数データを入力できるユーザーからの入力を読み取りたいです。これらのデータをすべて読み取りたいです。整数配列。

入力フォーマット-ユーザーは最初に入力したい数字の数を入力します

そして、次の1行に複数の整数値-

入力:

5

2 456 43 21 12

ここで、BufferedReaderのオブジェクト(br)を使用して入力を読み取ります

int numberOfInputs = Integer.parseInt(br.readLine());

次に、配列内の次の行の入力を読み取りたい

int a[] = new int[n];

しかし、このテクニックを使用して読むことはできません

for(int i=0;i<n;i++)
{
   a[i]=Integer.parseInt(br.readLine()); //won't work
}

だから、私の問題の解決策はありますか、またはBufferedReaderオブジェクトを使用して1行から複数​​の整数を読み取ることはできません

Scannerオブジェクトを使用すると、このタイプの入力を読み取ることができるため

for(int i=0;i<n;i++)
{
   a[i]=in.nextInt(); //will work..... 'in' is object of Scanner class
}
4
Lalit Kumar

次を試してください:

int a[] = new int[n];
String line = br.readLine(); // to read multiple integers line
String[] strs = line.trim().split("\\s+");
for (int i = 0; i < n; i++) {
    a[i] = Integer.parseInt(strs[i]);
}
11
Paul Vargas

整数を読みたいが、整数の数がわからなかった場合

String[] integersInString = br.readLine().split(" ");
int a[] = new int[integersInString.length];
for (int i = 0; i < integersInString.length; i++) {
    a[i] = Integer.parseInt(integersInString[i]);
}
5
Lalit Kumar

Integer.parseInt(br.readLine())->行全体を読み取り、それを整数に変換します。

scanner.nextInt()-> 1行内のすべてのトークンを1つずつ読み取り、整数に変換しようとします。

String[] in = br.readLine().trim().split("\\s+"); 
// above code reads the whole line, trims the extra spaces 
// before or after each element until one space left, 
// splits each token according to the space and store each token as an element of the string array.


for(int i = 0; i < n; i++)
    arr[i] = Integer.parseInt(in[i]);

// Converts each element in the string array as an integer and stores it in an integer array.
1
Sicario

パーティーに遅れましたが、streamsを使用してJava 8の1つのライナーでこれを行うことができます。

int[] input = Arrays.stream(br.readLine().split("\\s+")).mapToInt(Integer::parseInt).toArray();

1
Pramod

私はこのコードをリストに使用します:

List<Integer> numbers = Stream.of(reader.readLine().split("\\s+")).map(Integer::valueOf).collect(Collectors.toList());

そしてそれは配列についてもほとんど同じです:

int[] numbersArray = Arrays.stream(reader.readLine().split("\\s+")).mapToInt(Integer::valueOf).toArray(); 
1
ChillyWe
import Java.io.*;
public class HelloWorld{

     public static void main(String []args){
        int i;
        System.out.println("enter the array element");
        InputStreamReader isr= new InputStreamReader();
        BufferedReader ib= new BufferedReader(isr);
        int a[]=new int [5];
        for(i=0;i<5;i++)
        {
            a[i]= Integer.parseInt(ib.readLine(a[i]));

        }
        for(i=0;i<5;i++)
        {
            System.out.println(a[i]);
        }

     }
}
0
alok

Java.utilパッケージのStringTokenizerクラスを使用できます。 StringTokenizerクラスを使用すると、アプリケーションで文字列をトークンに分割できます。このトークンは、StringTokenizerクラスのnextToken()メソッドを使用して使用できます。

StringTokenizerの次のコンストラクターを使用できます。

StringTokenizer(String str、String delimiter);

delemeterとしてspace( "")を使用できます。

int a[] = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine() , " ");
for(int i=0 ; i<N ; i++) {
    a[i] = Integer.parseInt(st.nextToken());
}
0
VaibhavDomadia