2016-06-06 2 views
1

Я работаю над очень простой проблемой Java, где мне нужно прекратить принимать данные после ввода определенного значения пользователя. Пользователь может по-прежнему вводить данные после ввода значения, но после ввода значения выход не должен включать это значение или любые данные, следующие за этим значением. Кроме того, я пытался исключить отрицательные записи из подсчета, но безрезультатно. Вот мой код. Любая помощь будет оценена! Спасибо!Остановка ввода пользователем после определенной записи?

import java.util.Scanner; 

public class Sample 
{ 
    public static void main (String[] args) 
    { 
     System.out.println("Please input any number, up to 10 entries. " 
       + "Enter -1 to exit: "); 
     Scanner read = new Scanner(System.in); 
     int[] input_array = new int[10]; 
     int numOfEntries = 0; 
     for(int i = 0; i < input_array.length; i++) 
     { 
      input_array[i] = read.nextInt(); 
      numOfEntries++; 
      //only positive numbers 
      if(input_array[i] >= 100 || input_array[i] < 0) 
      { 
       if(input_array[i] == 77) //certain value 
       { 
        //entries before 77 is entered become the new array 
        numOfEntries = i; 
        int[] new_array = new int[numOfEntries]; 
        for (int j = 0; j < numOfEntries; j++) 
        { 
         new_array[j] = input_array[i]; 
        } 
        System.out.print(new_array[numOfEntries] + " "); 
       }    
       if(input_array[i] == -1) //exit loop 
       { 
        break; 
       } 
       System.out.println("Please enter a positive 
       number that is less than 100."); 
      } 
     } 

     //final result 
     System.out.println("Your entries are: "); 
     for (int i = 0; i < numOfEntries; i++) 
     { 
      System.out.print(input_array[i] + " "); 
     } 
+2

Как число, которое больше 100 или меньше 0, также равно 77? – Tom

+1

не увеличивайте или не назначайте input_array, если оно не проходит проверку –

ответ

0

Вы должны проверить, как это, чтобы убедиться, что все правильно передает условия

//all this goes inside the for loop 
    String input = read.nextInt(); 
    if (input == -1) 
     break; 
    if (input > 0)//is it negative? 
    { 
     if (input < 100)//is it greater than 100? 
     { 
      if (input == 77)//is it 77? 
      { 
       //your code 
      } 
      else//this will run when all conditions are passed 
      input_array[i] = input; 
     } 
    } 
0

Нет необходимости создавать отдельный массив, добавьте в исходный массив, только если он является действительным value.Check Приведенный ниже код, сделал несколько модификаций:

public static void main(String[] args) throws Exception { 
     { 
      System.out.println("Please input any number, up to 10 entries. " + "Enter -1 to exit: "); 
      Scanner read = new Scanner(System.in); 
      int[] input_array = new int[10]; 
      int numOfEntries = 0; 
      int entry = 0, status = 0; 
      for (int i = 0; i < input_array.length; i++) { 
       entry = read.nextInt(); 
       // only positive numbers 
       if (entry < 100 && entry >= 0) { 
        if (entry == 77) // certain value,change the value of 'status' here 
        { 
         status = 1; 
        } 
        if (status == 0) //if 'status' is not reset,then add the entry to array. 
        { 
         input_array[numOfEntries++] = entry; 
        } 

       } else if (entry == -1) // exit loop 
       { 
        break; 
       }else {//for negative and values which are greater than 100. 
        System.out.println("Please enter a positive number that is less than 100."); 
       } 
      } 

      // final result 
      System.out.println("Your entries are: "); 
      for (int i = 0; i < numOfEntries; i++) { 
       System.out.print(input_array[i] + " "); 
      } 
     } 
    } 
0

Вам не нужно добавить еще один массив, если вы не собираетесь использовать его, поэтому я удалил его и внес некоторые изменения в коде. Пожалуйста, проверьте приведенный ниже код. Пройдите комментарии. Надеюсь, вы поймете.

import java.util.Scanner; 

public class Sample { 
    public static void main(String[] args) { 
     System.out.println("Please input any number, up to 10 entries. " 
       + "Enter -1 to exit: "); 

     int[] input_array = new int[10]; //Input array - size 10 
     int input = 0; // input variable 
     boolean isInput77 = false; //Check input is 77 (certain value) 
     int numOfEntries = 0; // Number of entries that passes your conditions 
     Scanner read = new Scanner(System.in); 

     for (int i = 0; i < 10; i++) { 
      input = read.nextInt(); // input value assign to "input" variables 
      if (input == -1){ // input is -1 break 
       break; 
      } else if (input == 77){ // input is 77 isInput77 is true 
       isInput77 = true; 
      } else if (!isInput77 && input < 100 && input >= 0) { // isInput77 is false and input is positive number that is less than 100 add to input_array 
       input_array[numOfEntries] = input; 
       numOfEntries++; 
      } else if(input >= 100 || input < -1){ // input is negative or greater than or equal to 100 
       System.out.println("Please enter a positive number that is less than 100."); 
      } 
     } 

     System.out.println("Your entries are: "); 
     for (int i = 0; i < numOfEntries; i++) { // Print only valuable entries 
      System.out.print(input_array[i] + " "); 
     } 
    } 
}