![](/img/trans.png)
[英]How to read multiple Integer values from a single line of input in Java?
[英]How to read multiple integer values from one line in Java using BufferedReader object?
我正在使用 BufferedReader 類來讀取我的 Java 程序中的輸入。 我想從一個用戶那里讀取輸入,該用戶可以在一行中輸入多個帶空格的整數數據。 我想在一個整數數組中讀取所有這些數據。
輸入格式——用戶首先輸入他/她想輸入的數字
然后在下一行中有多個整數值-
輸入:
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 對象從一行讀取多個整數
因為使用 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]);
}
遲到了,但你可以在Java 8中使用這樣做在一個班輪streams
。
InputStreamReader isr= new InputStreamReader();
BufferedReader br= new BufferedReader(isr);
int[] input = Arrays.stream(br.readLine().split("\\s+")).mapToInt(Integer::parseInt).toArray();
如果您想讀取整數而您不知道整數的數量
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()
-> 在一行中逐個讀取每個標記,然后嘗試將其轉換為整數。
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.
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]);
}
}
}
我將此代碼用於列表:
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();
您可以使用 java.util 包的 StringTokenizer 類。 StringTokenizer 類允許應用程序將字符串分解為標記。 您可以使用 StringTokenizer 類的 nextToken() 方法使用此令牌。
您可以使用以下 StringTokenizer 的構造函數:
StringTokenizer(String str, String delimiter);
您可以使用 space(" ") 作為 delemeter。
int a[] = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine() , " ");
for(int i=0 ; i<N ; i++) {
a[i] = Integer.parseInt(st.nextToken());
}
正如你提到的,有兩行 - 第一行需要整數數量,第二行需要那么多數字
INPUT: 5 2 456 43 21 12
所以要解決這個問題並將其轉換為數組 -
String[] strs = inputData.trim().split("\\s+"); //String with all inputs 5 2 456 43 21 12
int n= Integer.parseInt(strs[0]); //As you said first string contains the length
int a[] = new int[n]; //Initializing array of that length
for (int i = 0; i < n; i++)
{
a[i] = Integer.parseInt(strs[i+1]); // a[0] will be equal to a[1] and so on....
}
輸入/輸出:34 54
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
for(int i=0;i<st.countTokens();i++){
a=Integer.parseInt(st.nextToken());
b=Integer.parseInt(st.nextToken());
}
//用於一行的快速輸入輸出
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.