Blake
Blake

Reputation: 91

Why is this simple program not working

So I'm doing some random practice for an upcoming exam, and I don't know if it's the fact that I've been reviewing for hours and my brain isn't functioning, or something in this code is wrong.

I'm attempting to make a very simple java program that asks the user for the amount of numbers they wish to enter (totalNum), create an array that long, and then ask the user for each individual value. After it asks the user for each value in the array, it prints the array.

Here is my code:

import java.util.Scanner;
public class Practice1 {
  public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    System.out.println("How many numbers would you like to store?");
    int totalNum = s.nextInt();

    int[] numbers= new int[totalNum];


    for (int i = 0; i>totalNum; i++) {
        System.out.println("Number" + i + " :");
        numbers[i] = s.nextInt();
        i++;
    }
    numbers.toString();
    System.out.println(numbers);


}
}

When I run it it asks the user for the numbers I want to store, then prints [I@33909752 and stops. I've done dozens of programs like this and for the life of me I can't figure out where I went wrong.

Any help would be appreciated, thanks!

Upvotes: 0

Views: 100

Answers (3)

Upender Sharma
Upender Sharma

Reputation: 1

Your loop condition should be

for (int i = 0; i<totalNum; i++) {

and within loop don't increment variable i

use below for your desired result.

public class Practice1 {
public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    System.out.println("How many numbers would you like to store?");
    int totalNum = s.nextInt();

    int[] numbers= new int[totalNum];

    for (int i = 0; i<totalNum; i++) {
        System.out.println("Number" + i + " :");
        numbers[i] = s.nextInt();
        i++;    //remove this
    }
    numbers.toString();
    System.out.println(Arrays.toString(numbers));


}
}

Upvotes: 0

slartidan
slartidan

Reputation: 21608

i>totalNum is the problem. The for loop will not execute even once.

The for loop has three parts:

  1. The action to perform before starting the loop
  2. The condition
  3. The action to perform after each loop

Your condition is i>totalNum, which is false for i=0 and totalNum=1. The loop won't execute even once.

The i++ is already mentioned in the loop, you do not need to include it in the loop body anymore.

The unexpected output is the caused by the default toString()-method of Array. Use Arrays.toString() for a readable output.

Upvotes: 1

Elliott Frisch
Elliott Frisch

Reputation: 201527

Your loop test is backwards. This

for (int i = 0; i>totalNum; i++) {

should be

for (int i = 0; i < totalNum; i++) {

as is, the test evaluates to false and the loop isn't entered. And, don't increment i in the loop body (that's what i++ does in the for). Finally,

System.out.println(numbers);

isn't going to print the array correctly, because arrays don't override Object.toString(). You can use Arrays.toString like

System.out.println(Arrays.toString(numbers));

Upvotes: 2

Related Questions