I read line with
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
reader.readLine();
Example input is
Since you don't know the size of input, you can read input as string and then parse the string array to integer array
String[] arr=reader.readLine().split(" ");
int[] intarr=new int[arr.length];
for(int i=0;i<arr.length;i++)
intarr[i]=Integer.parseInt(arr[i]);
Simple answer would be read integer inside the for
loop using nextInt()
method of scanner class.
Here is the implementation :
import java.util.Scanner;
public class DriverMain {
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the size of an array: ");
int size = scanner.nextInt();
System.out.println("Enter array elements separated by single space.");
int[] numbers = new int[size];
for(int i=0;i<size;i++){
numbers[i] = scanner.nextInt();
}
for(int i=0;i<size;i++){
System.out.println(numbers[i]);
}
}
}
You could pre-compiled regex Pattern
also to split String.
Pattern pattern = Pattern.compile("(\\d+)\\s+"); //$NON-NLS-1$
Matcher matcher = pattern.matcher(line);
List<Integer> numbers = new LinkedList<Integer>();
while (matcher.find()) {
numbers.add(Integer.valueOf(matcher.group(1)));
}
Integer[] output = numbers.toArray(new Integer[numbers.size()]);
Or you could also use pattern.split directly
Pattern pattern = Pattern.compile("(\\d+)"); //$NON-NLS-1$
String[] numberAsString = pattern.split(line);
int[] numbers = new int[numberAsString.length];
for (int i = 0; i < numberAsString.length; i++) {
numbers[i] = Integer.valueOf(numberAsString[i]).intValue();
}
Gotta love regex :D
Scanner sc = new Scanner(System.in);
String n=sc.nextLine();
String[] no=n.split(" ");
int sum=0;
for(String i:no){
sum+=Integer.parseInt(i);}
System.out.println(sum);
The Above code is how can you take space separate integer inputs using java programming and perform any task of your choice in my case I have added the numbers.
try
line = reader.readLine();
String[] s = line.split(" ");
...
you can look to StringTokenizer also, but one of the fastest will be to read bytes and iterate them and convert the ascii (utf8?) coded numbers yourself ;)
Well, with Java 8 Streams this can actually be done in one line:
int[] array = Arrays.stream(reader.readLine().split("\\s")).mapToInt(Integer::parseInt).toArray();
where reader
is your BufferedReader
object.
Explanation:
reader.readLine()
reads the input as String
reader.readLine().split("\\s")
splits that String
on white-spaces returning a String[]
Arrays.stream(reader.readLine().split("\\s"))
creates a Stream
from that String[]
Arrays.stream(reader.readLine().split("\\s")).mapToInt(Integer::parseInt)
applies Integer::parseInt
to each element of that Stream
and returns an IntStream
consisting of the results of the applied functionArrays.stream(reader.readLine().split("\\s")).mapToInt(Integer::parseInt).toArray()
returns the int[]
containing the elements of that IntStream