package nizovi;
import java.util.Scanner;
public class Nizovi {
private static String array;
public static void main(String[] args) {
Scanner sc= new Scanner (System.in);
int k = sc.nextInt();
int[] pos =new int[k];
int[] neg = new int [k];
Scanner n= new Scanner (System.in);
System.out.println("Enter the number of members of array:");
int members = n.nextInt();
for (int i=k;i>0;){
Scanner numb= new Scanner (System.in);
System.out.println("Enter number:");
int num=numb.nextInt();
if (broj >=0){
pos[num]=n.nextInt();
}
else{
neg[num]=n.nextInt();
}
}
}
}
I am using for loop and I am confused how to add more numbers into it because if I leave array command in for loop it defines it every time with the different scanner .Sorry for the bad explanation.
First : use one Scanner per input source, so here just one not 3
Then, you need to it by steps, you do a lot of useless things
ask the number of numbers you want to input k
create the arrays
ask k times the user to input a value
from the value insert in one array of the other
But you'll have zeros in your array, because you create 2 arrays of size k but enter only k elements, so you'll have k zeros in total in your arrays, use List to have only what you need
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the number of members of array:");
int k = scanner.nextInt();
int[] pos = new int[k];
int[] neg = new int[k];
for (int i = 0; i < k; i++) {
System.out.println("Enter a number:");
int numberUser = scanner.nextInt();
if (numberUser > 0) {
pos[i] = numberUser;
} else {
neg[i] = numberUser;
}
}
System.out.println(Arrays.toString(pos));
System.out.println(Arrays.toString(neg));
Scanner numb= new Scanner (System.in);
That statement ... is simply useless.
You already defined a valid scanner once, further up, named n.
You only should:
use a more meaningful name, like scannerForUserInput instead of n.
and then, whenever you want to read from the uer, you use that instance.
There is simply no need to define a new scanner for each new input data.
In the following code i marked the line that doesn't work.
Can someone explain me why this doesn't work?
import java.util.Scanner;
public class ArrayLength {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("Please enter the array : ");
double[] userArray = myScanner.nextDouble();//This line doesn't work
}
}
I guess you are trying to set a double array from a line-separated input. If so, you could use something like this:
Scanner myScanner = new Scanner(System.in);
System.out.println("Please enter the array : ");
String strScan = myScanner.nextLine();
String[] aScan = strScan.split(" ");
double[] userArray = new double[aScan.length];
int i = 0 ;
for (String str : aScan) {
userArray[i] = Double.parseDouble(str);
i++;
}
If you are expecting the user input to be located on exactly one line and you are sure that all the values (separated by a whitespace) could be parsed as Double I do recommend using the following statement:
double[] userArray = Arrays.stream(myScanner.nextLine().split(" "))
.mapToDouble(Double::parseDouble)
.toArray();
Read whole next line as string, split it by whitespace, and then do parse each value into double.
If you only need to read a single double value and you are required to store it into an array then you could simply use the Array Initializer like this:
double[] userArray = {myScanner.nextDouble()};
This way userArray will have 1 element in total and it's first and only value will be the user input.
You have to define array index in int, then only get double input
public class Example {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//Decide array length
System.out.print("Please enter the array : ");
int num = Integer.parseInt(scan.nextLine());
//Create a double array to store values
double userArray[] = new double[num];
for (int i = 0; i < userArray.length; i++) {
System.out.print("Enter value " + (i + 1) + " : ");
userArray[i] = scan.nextDouble(); // you can store input with double datatype now
}
//Now display one by one
for (int i = 0; i < userArray.length; i++) {
System.out.print("Value are " + (i + 1) + " : ");
System.out.print(userArray[i] + "\n");
}
}
}
If you don't want to take input as array
double num= myScanner.nextDouble();
myScanner.nextDouble() will output a single double instead of an array of doubles. So you would need to set that double equal to a specific index in the array instead of trying to set the whole array equal to a single double. I would suggest utilizing a for loop if you want to accept multiple doubles into the array.
For Example:
for(int x = 0; x < userArray.length; x++)
{
userArray[x] = myScanner.nextDouble(); // x in this scenario is a specific position in the array
}
Also if the user input is formatted with a space between each double (i.e. 1.0 2.0 3.0 4.0 etc) myScanner.nextDouble(); will take the first double then go through the for loop again and take the next double etc. This is useful because the user input can all be on one line so the user can input the entire array at once.
I keep getting the error "cannot find symbol 'arr' " How do I accept both the array as a user input (being a float not a double) and 3 float variables as elements in the array?
import java.util.Scanner;
public class runtime_array
{
public static void main(String[] args){
System.out.println("Program creates array size at run-time");
System.out.println("Program rounds sum and average of numbers to two decimal places");
System.out.println("Note: numbers *must* be float data type");
System.out.println(); //blank line
// taking String array input from user
Scanner input = new Scanner(System.in);
System.out.println("Please enter length of String array");
int length = input.nextInt();
arr[i] = input.nextInt();
// create an array to save user input
float[] input = new float[length];
float[] input = new float[arr];
// loop over array to save user input
System.out.println("Please enter array elements");
for (int i = 0; i < length; i++) {
}
float sum = 0;
System.out.println("The array input from user is : ");
for(int i = 0; i < arr.length; i++){
System.out.println(String.format("%.2f", Float.valueOf(arr[i])));
sum += Float.valueOf(arr[i]);
}
System.out.println("The sum is: " + String.format("%.2f",sum));
System.out.println("The average is: " + String.format("%.2f",(sum/length)));
}
}
You've got a couple issues here
First, you cannot declare float[] input because you've already given Scanner to the reference for input. You need to name your float[] something different. Let's go with userInput.
Scanner input = new Scanner(System.in);
System.out.println("Please enter length of String array");
int length = input.nextInt();
float[] userInput = new float[length];
Next, you are trying to do things with arr before you have declared it. However, I don't even think you need a reference to arr. You should remove this line.
arr[i] = input.nextInt();
Furthermore, you need to prompt your user during each loop iteration, as well as append the Scanner input to float[] userInput.
for (int i = 0; i < length; i++) {
System.out.println("Please enter array elements");
userInput[i] = input.nextInt();
}
I am working on a program and I want to allow a user to enter multiple integers when prompted. I have tried to use a scanner but I found that it only stores the first integer entered by the user. For example:
Enter multiple integers: 1 3 5
The scanner will only get the first integer 1. Is it possible to get all 3 different integers from one line and be able to use them later? These integers are the positions of data in a linked list I need to manipulate based on the users input. I cannot post my source code, but I wanted to know if this is possible.
I use it all the time on hackerrank/leetcode
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String lines = br.readLine();
String[] strs = lines.trim().split("\\s+");
for (int i = 0; i < strs.length; i++) {
a[i] = Integer.parseInt(strs[i]);
}
Try this
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
if (in.hasNextInt())
System.out.println(in.nextInt());
else
in.next();
}
}
By default, Scanner uses the delimiter pattern "\p{javaWhitespace}+" which matches at least one white space as delimiter. you don't have to do anything special.
If you want to match either whitespace(1 or more) or a comma, replace the Scanner invocation with this
Scanner in = new Scanner(System.in).useDelimiter("[,\\s+]");
You want to take the numbers in as a String and then use String.split(" ") to get the 3 numbers.
String input = scanner.nextLine(); // get the entire line after the prompt
String[] numbers = input.split(" "); // split by spaces
Each index of the array will hold a String representation of the numbers which can be made to be ints by Integer.parseInt()
Scanner has a method called hasNext():
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext())
{
System.out.println(scanner.nextInt());
}
If you know how much integers you will get, then you can use nextInt() method
For example
Scanner sc = new Scanner(System.in);
int[] integers = new int[3];
for(int i = 0; i < 3; i++)
{
integers[i] = sc.nextInt();
}
Java 8
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int arr[] = Arrays.stream(in.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
Here is how you would use the Scanner to process as many integers as the user would like to input and put all values into an array. However, you should only use this if you do not know how many integers the user will input. If you do know, you should simply use Scanner.nextInt() the number of times you would like to get an integer.
import java.util.Scanner; // imports class so we can use Scanner object
public class Test
{
public static void main( String[] args )
{
Scanner keyboard = new Scanner( System.in );
System.out.print("Enter numbers: ");
// This inputs the numbers and stores as one whole string value
// (e.g. if user entered 1 2 3, input = "1 2 3").
String input = keyboard.nextLine();
// This splits up the string every at every space and stores these
// values in an array called numbersStr. (e.g. if the input variable is
// "1 2 3", numbersStr would be {"1", "2", "3"} )
String[] numbersStr = input.split(" ");
// This makes an int[] array the same length as our string array
// called numbers. This is how we will store each number as an integer
// instead of a string when we have the values.
int[] numbers = new int[ numbersStr.length ];
// Starts a for loop which iterates through the whole array of the
// numbers as strings.
for ( int i = 0; i < numbersStr.length; i++ )
{
// Turns every value in the numbersStr array into an integer
// and puts it into the numbers array.
numbers[i] = Integer.parseInt( numbersStr[i] );
// OPTIONAL: Prints out each value in the numbers array.
System.out.print( numbers[i] + ", " );
}
System.out.println();
}
}
There is more than one way to do that but simple one is using String.split(" ")
this is a method of String class that separate words by a spacial character(s) like " " (space)
All we need to do is save this word in an Array of Strings.
Warning : you have to use scan.nextLine(); other ways its not going to work(Do not use scan.next();
String user_input = scan.nextLine();
String[] stringsArray = user_input.split(" ");
now we need to convert these strings to Integers. create a for loop and convert every single index of stringArray :
for (int i = 0; i < stringsArray.length; i++) {
int x = Integer.parseInt(stringsArray[i]);
// Do what you want to do with these int value here
}
Best way is converting the whole stringArray to an intArray :
int[] intArray = new int[stringsArray.length];
for (int i = 0; i < stringsArray.length; i++) {
intArray[i] = Integer.parseInt(stringsArray[i]);
}
now do any proses you want like print or sum or... on intArray
The whole code will be like this :
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String user_input = scan.nextLine();
String[] stringsArray = user_input.split(" ");
int[] intArray = new int[stringsArray.length];
for (int i = 0; i < stringsArray.length; i++) {
intArray[i] = Integer.parseInt(stringsArray[i]);
}
}
}
This works fine ....
int a = nextInt();
int b = nextInt();
int c = nextInt();
Or you can read them in a loop
Using this on many coding sites:
CASE 1: WHEN NUMBER OF INTEGERS IN EACH LINE IS GIVEN
Suppose you are given 3 test cases with each line of 4 integer inputs separated by spaces 1 2 3 4, 5 6 7 8 , 1 1 2 2
int t=3,i;
int a[]=new int[4];
Scanner scanner = new Scanner(System.in);
while(t>0)
{
for(i=0; i<4; i++){
a[i]=scanner.nextInt();
System.out.println(a[i]);
}
//USE THIS ARRAY A[] OF 4 Separated Integers Values for solving your problem
t--;
}
CASE 2: WHEN NUMBER OF INTEGERS in each line is NOT GIVEN
Scanner scanner = new Scanner(System.in);
String lines=scanner.nextLine();
String[] strs = lines.trim().split("\\s+");
Note that you need to trim() first: trim().split("\\s+") - otherwise, e.g. splitting a b c will emit two empty strings first
int n=strs.length; //Calculating length gives number of integers
int a[]=new int[n];
for (int i=0; i<n; i++)
{
a[i] = Integer.parseInt(strs[i]); //Converting String_Integer to Integer
System.out.println(a[i]);
}
created this code specially for the Hacker earth exam
Scanner values = new Scanner(System.in); //initialize scanner
int[] arr = new int[6]; //initialize array
for (int i = 0; i < arr.length; i++) {
arr[i] = (values.hasNext() == true ? values.nextInt():null);
// it will read the next input value
}
/* user enter = 1 2 3 4 5
arr[1]= 1
arr[2]= 2
and soo on
*/
It's working with this code:
Scanner input = new Scanner(System.in);
System.out.println("Enter Name : ");
String name = input.next().toString();
System.out.println("Enter Phone # : ");
String phone = input.next().toString();
A simple solution can be to consider the input as an array.
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); //declare number of integers you will take as input
int[] arr = new int[n]; //declare array
for(int i=0; i<arr.length; i++){
arr[i] = sc.nextInt(); //take values
}
You're probably looking for String.split(String regex). Use " " for your regex. This will give you an array of strings that you can parse individually into ints.
Better get the whole line as a string and then use StringTokenizer to get the numbers (using space as delimiter ) and then parse them as integers . This will work for n number of integers in a line .
Scanner sc = new Scanner(System.in);
List<Integer> l = new LinkedList<>(); // use linkedlist to save order of insertion
StringTokenizer st = new StringTokenizer(sc.nextLine(), " "); // whitespace is the delimiter to create tokens
while(st.hasMoreTokens()) // iterate until no more tokens
{
l.add(Integer.parseInt(st.nextToken())); // parse each token to integer and add to linkedlist
}
Using BufferedReader -
StringTokenizer st = new StringTokenizer(buf.readLine());
while(st.hasMoreTokens())
{
arr[i++] = Integer.parseInt(st.nextToken());
}
When we want to take Integer as inputs
For just 3 inputs as in your case:
import java.util.Scanner;
Scanner scan = new Scanner(System.in);
int a,b,c;
a = scan.nextInt();
b = scan.nextInt();
c = scan.nextInt();
For more number of inputs we can use a loop:
import java.util.Scanner;
Scanner scan = new Scanner(System.in);
int a[] = new int[n]; //where n is the number of inputs
for(int i=0;i<n;i++){
a[i] = scan.nextInt();
}
This method only requires users to enter the "return" key once after they have finished entering numbers:
It also skips special characters so that the final array will only contains integers
ArrayList<Integer> nums = new ArrayList<>();
// User input
Scanner sc = new Scanner(System.in);
String n = sc.nextLine();
if (!n.isEmpty()) {
String[] str = n.split(" ");
for (String s : str) {
try {
nums.add(Integer.valueOf(s));
} catch (NumberFormatException e) {
System.out.println(s + " cannot be converted to Integer, skipping...");
}
}
}
//Get user input as a 1 2 3 4 5 6 .... and then some of the even or odd number like as 2+4 = 6 for even number
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int evenSum = 0;
int oddSum = 0;
while (n > 0) {
int last = n % 10;
if (last % 2 == 0) {
evenSum += last;
} else {
oddSum += last;
}
n = n / 10;
}
System.out.println(evenSum + " " + oddSum);
}
}
if ur getting nzec error, try this:
try{
//your code
}
catch(Exception e){
return;
}
i know it's old discuss :) i tested below code it's worked
`String day = "";
day = sc.next();
days[i] = Integer.parseInt(day);`
I've created an array 8 elements long using the scanner class. I'm trying to accept user inputs via scanner and print out the value at that index location. eg if the user enters '2', it prints out the value at the second element. I've searched on google but all the resources are how to use the scanner to input data into an array, not using the scanner to retreive data back. the only way I thought of is by using a ridiculous amount of if else statements but there must be a cleaner way to do it in a loop?
This is my array, I've used the scanner to fill my array. Now, on prompt, the user must input a number from 1 to 8. If they input 1, print out solution[0]. Input 8, print out solution[7] etc. Hope its easier to understand now
String[] solution = new String[8];
Scanner scan = new Scanner( System.in );
for( int i = 0; i < solution.length; i++ ){
System.out.println( "Enter solution:" );
solution[ i ] = scan.next();
}
scan.close();
Scanner scan1 = new Scanner( System.in );
String selection;
System.out.println("Enter an int between 0 and 7 to retrieve the Selection: ");
selection = scan1.next();
int i = Integer.parseInt(selection);
System.out.println( "The Selection is: " + solution[i] );
This is difficult without any code, but basically, use the scanner to get the input into string selection, get the integer value into int i with int i = Integer.parseInt(selection);, then myArray[i].
Scanner input = new Scanner(System.in);
then output:
urArray[input.nextInt()];
You have to read an int, and use this when getting the value stored at the specified index.
A way to do this is the following:
yourArray[scanner.nextInt()];
Where scanner is the Scanner object.
To catch the excpetions you may receive when reading things you assume are numbers, you could do this:
Scanner scanner = new Scanner(System.in);
try {
yourArray[scanner.nextInt()];
} catch(IllegalStateException | NoSuchElementException e) { // <--- Java 1.7 syntax, in case you wonder
e.printStackTrace();
}
import java.util.Scanner;
public class array1
{
public static void main(String args[])
{
int arr[]=new arr[100];
int i;
Scanner sc=new Scanner(System.in);
System.out.pritln("Enter the Number of Element less than 100");
int a=sc.nextInt();
System.out.println("Enter the Number");
for(i=0;i<a;i++)
{
arr[i]=sc.nextInt();
}
System.out.println("List of Elements in array");
for(i=0;i<a;i++)
{
System.out.println(arr[i]);
}
}
}