2014-11-20 3 views
-2

Хорошо, я получил этот рабочий цикл, который позволяет пользователю вставлять случайные числа, если число равно 0 или длина петель достигнута, тогда он остановится, теперь мне нужно вывести все числа который был введен и количество входов (пример 1, 2, 3 сумма = 3). Как вывести массив? я получаю только 0 из println.массив while loop output Java

public static void main(String[] args) { 

    Scanner scan = new Scanner(System.in); 

    int [] a1 = new int[100]; 

    int i = 0; 
    int tal; 

    while(true){ 

     System.out.println("Insert number (0-end):"); 
     tal = scan.nextInt(); 

     if(tal == 0 || a1[i] == a1.length){ 
      break; 
     }else{ 
      tal += a1[i]; 
     } 


    }//End of while 

    System.out.println("The inserted numbers are are: " + a1[i]); 


}// 
+2

так в чем ваш вопрос? – Haris

+0

Как вывести вставленные числа (массив), я получаю только 0 из println –

+0

Я уверен, что вы можете понять это самостоятельно, попробуйте немного больше. Просто отметьте, что вы не используете переменную 'i' правильно. – brlaranjeira

ответ

0

Прежде всего, храните тал в массиве и увеличивайте i каждый раз, когда вы храните. Наконец, итерация через массив для ввода введенных элементов

import java.util.Scanner; 

public class Tset { 
    public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in); 

     int [] a1 = new int[100]; 

     int i = 0; 
     int tal; 

     while(true){ 

      System.out.println("Insert number (0-end):"); 
      tal = scan.nextInt(); 

      if(tal == 0||i>=100){ 
       break; 
      }else{ 
       a1[i]=tal; 
       i++; 
      } 


     }//End of while 


     System.out.println("The inserted numbers are are: "); 
     for(int j=0;j<i;j++){ 
      System.out.println(a1[j]+"\t"); 

     } 
     System.out.println("amount is: " +i); 


    }// 
} 
+0

Спасибо, это действительно помогло –

0

Прежде всего, ваше состояние является неправильным, так как вы хотите, чтобы сравнить текущий индекс i длине массива. В настоящее время вы сравниваете значение i-го элемента массива (который все еще содержит 0) с длиной массива.

Оно должно быть:

if(tal == 0 || i == a1.length) 

Во-вторых, вы не вставляя никаких цифр в массив. Оно должно быть:

a1[i] = tal; 
i++; 

После того, как вы получите, что фиксированы, вы можете распечатать массив с Arrays.toString(a1), или вы можете перемещаться по индексам массива и напечатать каждый номер самостоятельно.

+0

Возможно, будет хорошей идеей объяснить OP, почему это условие неверно. –

0

Используйте ArrayList вместо массива, чтобы собрать ввод числа, а затем итерацию над ним, чтобы напечатать их использовать встроенный в методе длина для вывода сумма

+0

можно использовать только массив в этой задаче –

0

Пара вопросов:

  • You может захотеть поместить элемент, который вы читаете в массив, как a1[i] = scan.nextInt();, и инициализировать tal как 0 и использовать a1 [i] в ​​условии if вместо tal.
  • Вы не увеличиваете значение i, а end переписываете предыдущее значение.
  • Как только вы выходите из цикла, вы просто печатаете 0-е значение массива, которое, я думаю, вы ввели 0 и вышел из цикла.

Вы можете по прибывшему их, как показано ниже:

Только после tal += a1[i]; приращения значения I, как:

i++; 

Теперь, чтобы напечатать ваш элемент, использовать петлю, как:

System.out.print("The inserted numbers are are:"); 
for (int j=0; j<i; j++) { 
    System.out.print(" " + a1[j]); 
} 
System.out.println(); 
+0

Это своего рода работает, но проблема в том, что выходы Вставленные цифры 1, Вставленные цифры 2, Вставленные цифры 3 и т.д. вместо того, вставленные цифры : 1,2,3,4,5,6,7 –

+0

Я дублировал «Введенные числа:« часть, которую я сейчас удалил ». Проверьте и проверьте, помогает ли это. – SMA

0

Я не уверен, что вы пытаетесь сделать, но это может помочь.

public static void main(String[] args) { 

    Scanner scan = new Scanner(System.in); 

    int[] a1 = new int[100]; 

    int i = 0; 
    int tal = 0; 
    int tmp; 
    do { 
     System.out.println("Insert number (0-end):"); 
     tmp = scan.nextInt(); 
     a1[i] = tmp; 
     tal += a1[i++]; 
    } while (tmp != 0 && i < a1.length); 

    System.out.println("The inserted numbers are : "); 
    for (int j = 0; j < i-1; j++) { 
     if (j == i-2) { 
      System.out.print(a1[j] + "."); 
     } else { 
      System.out.print(a1[j] + ", "); 
     } 
    } 
    System.out.println("The sum is : " + tal); 


}