如何使用BufferedReader对象从Java中的一行读取多个整数值?

时间:2014-08-25 18:16:37

标签: java arrays integer buffer bufferedreader

我使用BufferedReader类来读取Java程序中的输入。 我想读取用户输入的输入,用户可以用空格单行输入多个整数数据。 我想在整数数组中读取所有这些数据。

输入格式 - 用户首先输入他/她想要输入的号码

然后在下一行中有多个整数值 -

INPUT:

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
}

10 个答案:

答案 0 :(得分:12)

尝试下一个:

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

答案 1 :(得分:5)

如果你想读整数,你不知道整数的数量

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

答案 2 :(得分:1)

迟到聚会,但是您可以使用var result = from mark in diM join time in diT on mark.Key equals time.Key orderby mark.Value descending, time.Value select new { Name = mark.Key, Grade = mark.Value, Time = time.Value }; 在Java 8的一个衬里中完成此操作。

streams;

答案 3 :(得分:0)

您可以使用java.util包的StringTokenizer类。 StringTokenizer类允许应用程序将字符串分成令牌。您可以通过StringTokenizer类的nextToken()方法使用此令牌。

您可以使用StringTokenizer的以下构造函数:

StringTokenizer(String str,字符串定界符);

您可以将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());
}

答案 4 :(得分:0)

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

     }
}

答案 5 :(得分:0)

我将此代码用于列表:

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

答案 6 :(得分:0)

Integer.parseInt(br.readLine())->读取整行,然后将其转换为Integers。

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.

答案 7 :(得分:0)

正如你提到的,有两行—— 第一行取整数个数,第二行取整数个数

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....

}


     
        

答案 8 :(得分:0)

i/p: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());
 }

//用于一行的快速输入输出

答案 9 :(得分:0)

据我所知,您可以将输入作为字符串,然后对其进行相应的划分。如果您希望输入为整数,则可以对其进行类型转换。这是一个在一行中输入数组的小例子。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
int num = Integer.parseInt(br.readLine()); //Length of Array
String s= br.readLine(); //Input the number seperated by space
int[] arr= new int[num];
String[] s1 = s.split(" ");
for(int i=0;i<num;i++)
{
    arr[i]=Integer.parseInt(s1[i]);
}

这会奏效。