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
}
次を試してください:
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]);
}
整数を読みたいが、整数の数がわからなかった場合
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]);
}
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.
パーティーに遅れましたが、streams
を使用してJava 8の1つのライナーでこれを行うことができます。
int[] input = Arrays.stream(br.readLine().split("\\s+")).mapToInt(Integer::parseInt).toArray()
;
私はこのコードをリストに使用します:
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();
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]);
}
}
}
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());
}