2014-01-16 5 views
2

Я новичок в Java, и я пытаюсь сделать программу для пользователя, чтобы ввести определенное количество целых чисел, а затем получить эти целые числа и распечатать их обратно.Java Beginner Assignment

Это работает, только если вы вводите 1 целое число. В противном случае он завершается.

import java.util.Scanner; 
public class Assignment4 { 

    public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in); 
     System.out.println("Enter the Number of Numbers"); 
     int totalNumbers = scan.nextInt(); 
     int[] numbers = new int[totalNumbers]; 
     for(int i = 0;i == (totalNumbers-1); i++){ 
      System.out.println("Enter the Next Number"); 
      numbers[i] = scan.nextInt(); 
     } 


     for(int i = 0;i == (totalNumbers-1); i++){ 
      System.out.println(numbers[i]); 
     } 

    } 
} 

ответ

7

Условие вашей петли - ваша проблема. Он будет принимать только один вход. Условие:

for(int i = 0; i == (totalNumbers-1); i++){ 

прекращаются, когда i != (totalNumbers - 1). Ваш for цикл должен быть прочитан как следующий:

Инициализировать новую переменную я к нулю, то в то время как я равен «totalNumbers - 1», сделайте следующий блок кода, то приращение I на 1

Вы, вероятно, хотите:

for(int i = 0; i <= (totalNumbers-1); i++){ 

который может быть прочитан как:

Инициализировать новую переменную я к нулю, то при я меньше или равна «totalNumbers - 1», сделайте следующий блок кода, то приращение я на 1

+0

Спасибо! Исправлена ​​работа. Это была глупая ошибка. –

+0

Без проблем, рад помочь – Kon

-1

То, что я понял из вашего кода, ваш виновником является следующая строка:

for(int i = 0;i == (totalNumbers-1); i++){ 
     System.out.println("Enter the Next Number"); 
     numbers[i] = scan.nextInt(); 
} 

цикл не будет выполняться до тех пор пока вы не имеете totalNumbers = 1. Только тогда у вас будет i = totalNumbers - 1 = (1 -1) = 0, который удовлетворяет условию i == (totalNumbers - 1) внутри вашей петли. Именно по этой причине вы можете ввести только 1 номер; если у вас есть значение totalNumbers, отличное от 1, цикл не будет выполнен, и ваша программа завершится.

То, как вы написали условие цикла, неверно. Скорее, вы должны написать вот так:

for(int i = 0;i <= (totalNumbers-1); i++){ 
    //do your work here 
} 

Запишите цикл for в указанном выше порядке в обоих циклах вашего вопроса.

+0

В чем причина, по которой я получаю downvote ??? :(:(Мое решение, похоже, в порядке. –

1

Есть две ошибки в коде, как связаны с оператором цикла,

заменить первый оператор цикла на

for(int i = 0;i <= (totalNumbers-1); i++) 

и заменить второй оператор цикла по

for(int i = 0;i <= (totalNumbers-1); i++) 

отношений.

+0

Это то же самое, что @Kons отвечает – micstr

+0

так? Что случилось? – user3454581

+0

См. Комментарии в ответе Kons. Это помогло пользователю shaan ... но пользователь никогда не принимал ответ. Попробуйте прокомментировать Shaans начальный вопрос, так как он получит электронное письмо и может выбрать ваш ответ. Я отвечу на ваш ответ, поскольку я знаю, каково это, когда вы начинаете с SO – micstr

0
import java.util.Scanner; 
public class Assignment4 { 

public static void main(String[] args) { 

    Scanner scan = new Scanner(System.in); 
    System.out.println("Enter the Number of Numbers"); 
    int totalNumbers = scan.nextInt(); 
    int[] numbers = new int[totalNumbers]; 
    for(int i = 0;i <= (totalNumbers-1); i++){ //changed the loop's condition 
     System.out.println("Enter the Next Number"); 
     numbers[i] = scan.nextInt(); 
    } 


    for(int i = 0;i <= (totalNumbers-1); i++){ //changed the condition in the 
     System.out.println(numbers[i]); 
    } 

} 

}

Причина вы получите ввести только один номер является условие, которое Вы дали в течение loop.You нужно не вводить цифры до I го значение меньше или равно к (totalNumbers-1) Но если бы я был вами, я бы использовал **for(int i = 0;i < totalNumbers1; i++)** just sayin