java - Taking integers as input from console and storing them in an array -
when trying write following code, computer takes several inputs. want should take 1 line input , save integers in line in array. can me please?
import java.util.*; class inputinteger{ public static void main(string args[]){ scanner input=new scanner(system.in); int[] array=new int[20]; int i=0; while(input.hasnext()){ array[i]=input.nextint(); i++; } input.close(); } }
but want should take 1 line input , save integers in line in array.
first, urge not close()
scanner
have created around system.in
. that's global, , close()
ing can cause kinds of issues later (because can't reopen it). reading single line of input , splitting int
values array, use scanner.nextline()
, like
public static void main(string[] args) { scanner input = new scanner(system.in); if (input.hasnextline()) { string line = input.nextline(); string[] arr = line.split("\\s+"); int[] vals = new int[arr.length]; (int = 0; < arr.length; i++) { vals[i] = integer.parseint(arr[i]); } system.out.println(arrays.tostring(vals)); } }
edit based on comment,
string line = "1 31 41 51"; string[] arr = line.split("\\s+"); int[] vals = new int[arr.length]; (int = 0; < arr.length; i++) { vals[i] = integer.parseint(arr[i]); } system.out.println(arrays.tostring(vals));
output is
[1, 31, 41, 51]
if need handle errors, suggest use list
like
list<integer> al = new arraylist<>(); (int = 0; < arr.length; i++) { try { al.add(integer.parseint(arr[i])); } catch (numberformatexception nfe) { } } // print list system.out.println(al); // , if must have `int[]` copy like. int[] vals = new int[al.size()]; (int = 0; < al.size(); i++) { vals[i] = al.get(i); } system.out.println(arrays.tostring(vals));
Comments
Post a Comment