我使用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
}
答案 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]);
}
这会奏效。