2015-12-03 3 views
-2

Я пытаюсь получить код до break, когда int получает отрицательное число.Как проверить int [] имеет определенную цифру

Вот мой код:

package merge.arrays; 

import java.util.ArrayList; 
import java.util.Scanner; 

public class MergeArrays { 
    public static void main(String[] args) { 
     ArrayList<String> list = new ArrayList<>(); 
     Scanner input = new Scanner(System.in); 

     System.out.println("Enter the value for the 1st array (0-10000), and enter a negative number to quit:"); 
     int array1 = input.nextInt(); 
     while (array1 >= -1) { 
      for (int i = 0; i < 10000; i++) { 
       array1 = array1 + input.nextInt(); 
       if (array1 <= -1) { 
        break; 
       } 
      } 
     } 

     System.out.println("Enter the value for the 2nd array (0-10000), and enter a negative number to quit:"); 
     int array2 = input.nextInt(); 
     while (array2 >= -1) { 
      for (int i = 0; i < 10000; i++) { 
       array2 = array2 + input.nextInt(); 
       if (array2 <= -1) { 
        break; 
       } 
      } 
     } 

     System.out.println("1st array:\n" + array1); 
     System.out.println("2nd arrat:\n" + array2); 
    } 
} 
+0

Вы объявили ArrayList, но не использовал его. Вы говорите, что хотите проверить, есть ли int [], но вы вообще не используете массив. Вы хотите прекратить запрашивать пользователя для ввода, если отрицательное число найдено как один из входов? – Raf

+0

Именование переменной '' array1'' или '' array2'' не делает ее массивом. –

+0

Модератор, вы можете удалить это? В любом случае, я создатель вопроса. – LOL

ответ

1

Глядя на ваш вопрос есть некоторые вопросы, как следующие:

  1. Я не знаю, что цель ArrayList списка, потому что вы не используете это где угодно
  2. Ваши вопросы упоминают о массивах int [], но вы вообще не используете массивы
  3. Вы запрашиваете ввод пользователя, а затем в цикле while вы говорите g while (array1 >= -1), что противоречит цели вашего вопроса, который вы хотите разбить, когда предоставляется отрицательное значение.
  4. Предполагая, что ваш первый вход не был отрицательным, внутри цикла вы добавляете значение ввода, когда получаете его от пользователя, а затем проверьте, является ли он отрицательным или положительным, а не сначала проверяет ввод, а затем добавляет его к предыдущему значению.

Задание вашего вопроса. Я понимаю, что вы хотите прекратить запрашивать у пользователя ввод данных, если вы обнаружите, Если это цель, то вам необходимо внести следующие изменения в коде:

while (array1 >= 0){ 
    for(int i = 0; i < 10000; i++){ 
     //get user input in temp 
     int temp = input.nextInt(); 

     if(temp < 0) { 
      //user provided negative value, so break from loop 
      break; 
     } else { 
      array1 = array1 + temp; 
     } 
    } 
} 

Сделать выше изменения в обоих в то время как петли и вы должны быть все хорошо.

0

Ваш код:

int array1; 
    array1 = input.nextInt(); 

    while (array1 >= -1) // why this outer loop 
    { 
     for(int i = 0; i < 10000; i++) { 
      array1 = array1 + input.nextInt(); //You are adding previous values with new values, how it will determine if entered a negative number. 
      if(array1 <= -1) { 
       break; 
      } 
     } 
    } 

Например: Пусть я вошел 4 5 6 -1 Первый раз array1 = 4, в то время как петля верно так идти внутри цикла, то ДО 10000 раз, когда вы добавляете значение так позволяет предположить, что он добавил 4 + 5 = 9 и третий раз array2=array2+(-1), который равен 8, а если() условие ложно, цикл выполняется еще раз. Ошибка !!!!!

Таким образом, вы должны использовать что-то вроде этого:

int array1; 
for(int I=0;i<10000;i++) 
{ 
    int temp = input.nextInt(); 
    if(temp < 0) 
    { 
    break; 
    } 
    array1 = array1+temp; 
}