I need help figuring out how to get the user to input a number of integers no more than 10, and then add them to an array and print them out from the array. The code I have below, when run, asks the user for the integers and then runs forever and doesn't work. What am I doing wrong?
public static void main(String[] args) {
Scanner input = new Scanner(System.in); // create a new scanner
System.out.print("Enter integers between 1 and 100\n ");
int[] nextNumber = new int[10];
int i = 0;
int number = input.nextInt();
while (i < nextNumber.length){
i++;
nextNumber[i] = number;
number = input.nextInt();
}
int a = 0;
while (a < nextNumber.length){
a++;
System.out.println(nextNumber[a]);
}
Seems to me like you increment your index too fast. You should increment your index variables at the end of your loops, not the beginning.
I would suggest you use for loops instead since they are designed for that:
Scanner input = new Scanner(System.in); // create a new scanner
System.out.print("Enter integers between 1 and 100\n ");
int[] nextNumber = new int[10];
for (int i = 0; i < nextNumber.length; i++){
nextNumber[i] = input.nextInt();
}
for (int a = 0; a < nextNumber.length; a++){
System.out.println(nextNumber[1]);
}
Also, although I did not change it in the code, it seems like your last line should be:
System.out.println(nextNumber[a]);
Increment the array index after the values have been assigned to the arrays
while (i < nextNumber.length) {
number = input.nextInt();
nextNumber[i] = number;
i++;
}
The same applys to the second loop
while (a < nextNumber.length) {
System.out.println(nextNumber[a]);
a++;
}
Problem 1
Change
int i = 0;
int number = input.nextInt();
while (i < nextNumber.length){
i++; //here is one problem. you not assigning the value to nextNumber[0].
nextNumber[i] = number;
number = input.nextInt();
}
to
int i = 0;
while (i < nextNumber.length){
number = input.nextInt();
nextNumber[i] = number;
i++;
}
Problem 2
change
int a = 0;
while (a < nextNumber.length){
a++; //here is one problem ..You never get nextNumber[0] value
System.out.println(nextNumber[a]);
}
to
int a = 0;
while (a < nextNumber.length){
System.out.println(nextNumber[a]);
a++;
}
You can easily do this as follows. Better use for loop since you know the maximum number of iterations.
Scanner input = new Scanner(System.in); // create a new scanner
System.out.print("Enter integers between 1 and 100\n ");
int[] nextNumber = new int[10];
int i = 0;
while (i < nextNumber.length) nextNumber[i++] = input.nextInt();
int a = 0;
while (a < nextNumber.length) System.out.println(nextNumber[a++]);
Related
Please explain what is happening here as i dont understand what is getting incremented...
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] a = new int[100];
for(int a_i=0; a_i < n; a_i++){
a[in.nextInt()]++; //here
}
You get the scanner tied to the system input (keyboard).
Scanner in = new Scanner(System.in);
Asking for an integer number n from the keyboard:
int n = in.nextInt();
Declaring an array of 100 int elements (from 0 to 99)
int[] a = new int[100];
And:
// Running a loop from 0 to the entered n value.
for(int a_i=0; a_i < n; a_i++){
// requesting an int number from keyboard in in.nextInt()
// and incrementing array element with the index obtained in in.nextInt()
a[in.nextInt()]++;
}
a[in.nextInt()]++; can be converted to code:
int idx = in.nextInt();
a[idx]++;
For example (we are told we want to go up to 'X'):
Scanner scan = new Scanner(System.in);
for (int i; i <= X; i++)
{
System.out.println("Enter the value for value " + i)'
int valuei = scan.nextInt();
}
So instead of constantly reasssining a value to the one variable 'valuei',
our program would create X number of integer variables as well as assigning them the corresponding user input as values.
'value1' gets the value the user had input as an answer at index 1
'value2' gets the value the user had input as an answer at index 2
...
'valuei' gets the value the user inputs as an answer at index i
If not possible, what would be the most efficient way to accomplish the above?
Thanks
It looks like you are wanting to use arrays
Scanner scan = new Scanner(System.in);
int arr [] = new int [X];
for (int i = 0; i < X; i++)
{
System.out.println("Enter the value for value " + i)'
arr[i] = scan.nextInt();
}
If you are just reading it then you can just need to read the value from user and it should be i<x because index starts at 0.
`Scanner scan = new Scanner(System.in);
int x = scan.nextInt();
for (int i=0; i < x; i++) {
System.out.println("Enter the value for value " + i);
int valuei = scan.nextInt();
}`
If you want to read that in an array :
Scanner scan = new Scanner(System.in);
int x = scan.nextInt();
int[] arr = new int[x];
for (int i = 0; i < x; i++) {
System.out.println("Enter the value for value " + i);
arr[i] = scan.nextInt();
}
You can use an array
int []valuei = new int[X];
valuei [0] gets first input.
valuei [1] gets second input.
....
valuei [X-1] gets Xth input.
Scanner scan = new Scanner(System.in);
int []valuei = new int[X];
for (int i=0; i < X; i++)
{
System.out.println("Enter the value for value " + i);
valuei[i]=scan.nextInt();
}
Arrays.
An array is a container object that holds a fixed number of values of a single type
For example:
int[] value = new int[X];
for (int i=0; i < X; i++)
{
System.out.println("Enter the value for value " + i);
value[i] = scan.nextInt();
}
Also note how loop changed to int i=0; i < X; i++
hi guys i've had some help with this program today, basically what i want is for an array of 1 - 200 to be held, then the user inputs a number between 1 and 200.
The ramaning numbers are then added together and the answer outputted.
e.g. user enters 100, numbers from 100-200 are then added together and answer is output.
With the code i have so far it is always outputting 0 as the answer. Any ideas?
thanks.
//Importing scanner
import java.util.Scanner;
//Class name
class programfive{
//Main method
public static void main (String[]args){
//declaring and inizialising scanner
Scanner input = new Scanner (System.in);
//Declaring and inizialising variables
int userInput = 0;
int sum = 0;
//Array initializer
int array[] = new int [201];
//Prompt for user input
System.out.print("Please enter a value between 1 and 200: ");
userInput = input.nextInt();
//For loop - starts at number user inputted, stops when reaches 200, increments by 1.
for (int i = userInput; i<=200; i++)
{
sum += array[i];
}
System.out.println(sum);
}//End of main method
}//End of class
Because you haven't put anything in your array, it contains the default int value at each index, and that is 0 .
You have to fill it with the values you want, so that array[0] contains 0, array[1] contains 1, etc..
int array[] = new int [201];
for(int i=0; i<array.length;i++)
array[i] = i;
Also, you could get rid of the array and get the same result :
for (int i = userInput; i<=200; i++)
{
sum += i;
}
you need to initialize the array first, or changing the sum loop to:
for (int i = userInput; i<=200; i++)
{
sum += i;
}
Untested but should work:
public static void main(String[]args) {
Scanner input = new Scanner(System.in);
int userInput = 0;
int sum = 0;
System.out.print("Please enter a value between 1 and 200: ");
userInput = input.nextInt();
for (int i = userInput; i<=200; i++)
sum += i
userInput.close();
System.out.println(sum);
}
you forgot to populate your array with numbers currently all of your array elements are pointing to the default value of 0.
add this line of code after the array declaration and your good to go:
for(int i=0;i<array.length;i++)
array[i]=i;
System.out.println("Enter five numbers: ");
Scanner scanner = new Scanner(System.in);
int[] array = new int [5] ;
for (int i =0; i < array.length; i++){
array[i] = scanner.nextInt();
}
int sum = 0;
for (int i : array){
sum = sum +i;
}
System.out.println(sum);
I am trying to create a program that sorts user inputted integers from greatest to least. Also I need to find a way to print the maximum and minimum numbers. The code was sorting fine when I had defined values but now that I have switched it to user input it sends back "0"s for some reason. This is my code
import java.util.Scanner;
public class SortInteger {
public static void main(String [] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Please input three numbers");
int num = input.nextInt();
int number [] = new int [num]; //Sorting Array
int temp;
boolean correct = false; // Forces the sorting to continue till the numbers are in order
while(correct ==false){
correct = true;
for(int i = 0; i>number.length-1; i++ ){
if(number [i] > number [i+1]){
temp = number [i+1];
number [i+1] = number[i];
number[i]= temp;
correct = false;
}
}
}
for(int i = 0; i<number.length-1; i++){ //outputs the array to user
System.out.println(number[i]);
}
}
}
you have taken only one number
int num = input.nextInt();
and you are using it for array size :
int number [] = new int [num];
but in rest of the code you haven't taken any input so your array is empty.
Code::
import java.util.*;
class test{
public static void main(String [] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Please input three numbers");
int num1 = input.nextInt();
int num2 = input.nextInt();
int num3 = input.nextInt();
int number [] = {num1,num2,num3}; //Sorting Array
int temp;
boolean correct = false; // Forces the sorting to continue till the numbers are in order
while(correct ==false){
correct = true;
for(int i = 0; i<number.length-1; i++ ){
if(number [i] > number [i+1]){
temp = number [i+1];
number [i+1] = number[i];
number[i]= temp;
correct = false;
}
}
}
for(int i = 0; i<number.length; i++){ //outputs the array to user
System.out.println(number[i]);
}
}}
Output::
Please input three numbers
1
5
4
1
4
5
you are only initializing your array. you never initialized your array with elements, thus your array elements get default values.
System.out.println("Please enter size");
int num = input.nextInt();
int number [] = new int [num]; //Sorting Array
for(int i=0; i<number.length; i++){
System.out.println("Please enter element at index " + i);
number[i] = input.nextInt()
}
As others pointed out you need to populate your array with multiple values, currently you are requesting only one int.
Also, are you sure that works? Should't your first for loop read:
for(int i = 0; i<number.length-1; i++ )
Instead of:
for(int i = 0; i>number.length-1; i++ )
On a side note, it looks to me that your sorting algorithm is O(n2) you may want to look into mergesort and quicksort.
Hi i am trying to auto populate a 2d array based on user input.
The user will enter 1 number, this number will set the size of the 2d array. i then want to print out the numbers of the array.
for example , if the user enters the number 4 . the 2d array will be 4 rows by 4 colums, and should contain the number 1 to 16, and print out as follows.
1-2-3-4
5-6-7-8
9-10-11-12
13-14-15-16
But i am struggling to think of the right statement that will do this.
for the moment my code just prints out a 2d array containing *.
Has anyone any ideas how i could print out the numbers , i'm really stuck.
my code follows:
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.println("Enter room length");
int num1 = input.nextInt();
int num2 = num1;
int length = num1 * num2;
System.out.println("room "+num1+"x"+num2+"="+length);
int[][] grid = new int[num1][num2];
for(int row=0;row<grid.length;row++){
for(int col=0;col<grid[row].length;col++){
System.out.print("*");
}
System.out.println();
}
}
Read n value,
int[][] arr = new int[n][n];
int inc = 1;
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
arr[i][j] = inc++;
Well, first of all you have to fill the array with the numbers. You can use your double for loop for this and a counter variable which you increment after each loop of the inner for loop.
int counter = 1;
for(int x = 0; x < num1; x++)
{
for(int y = 0; y < num2; y++)
{
grid[x][y] = counter++;
}
}
Afterwards you can output the array again with a double for loop.
I am not sure if I understand you right.
You have problem with the code printing *?
If yes, then the reason for that is this
System.out.print("*");
Should be
System.out.print(grid[row]);
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter room length");
int arraySize = input.nextInt();
System.out.println("Length: " + (arraySize*arraySize));
int[][] array = new int[arraySize][arraySize];
int count = 1;
for (int i=0;i<arraySize;i++) {
for (int j=0;j<arraySize;j++) {
array[i][j] = count;
if (j != (arraySize-1))
System.out.print(count + "-");
else
System.out.println(count);
count++;
}
}
}
This code should print out the numbers how you want them.