2014-11-11 2 views
0

мои данные в блокнот 1,2,3,4,5,6,7,8,9,10... почему, когда str ==5 используя перерыв не хорошую работу, мои данные, как предполагается остановка, когда в цифрах 5 ... просто показать 1,2,3,4,5,6,7,8,9,10...файл перерыв Txt в Java

Scanner sc = new Scanner (new File("c:/Users/ASUS/Desktop/Numbers.txt")); 
      while (sc.hasNextInt()){ 
       int str = sc.nextInt(); 
       for (int i=0; i<str; i++){ 
        if (str == 5); 
        break; 
       } 

       System.out.print(str+ " "); 
      }  
      sc.close(); 
     } 
    } 
+0

для чего это для цикла? –

+0

Что вы пытаетесь достичь? – brso05

+0

Как вы должны предлагать? – rickyhitman10

ответ

1

Вы можете просто изменить код, чтобы быть проще и сделать:

Scanner sc = new Scanner (new File("c:/Users/ASUS/Desktop/Numbers.txt")); 
      int str = sc.nextInt(); 
      while (sc.hasNextInt() && str != 6){ 
       System.out.print(str+ " "); 
       str = sc.nextInt(); 
      }  
      sc.close(); 
     } 
    } 
+0

Я хочу отображать 1,2,3,4,5 не 1,2,3,4,5,6,7 , 8,9,10 – rickyhitman10

+0

@ rickyhitman10 Тогда посмотрите мой код, он даст вам 1 2 3 4 5 или используйте этот код, но измените 'str! = 5' на' str! = 6'. – brso05

+0

Извините @ rickyhitman10. указывая на мою ошибку. Я обновил свой ответ r, чтобы соответствовать вашим потребностям –

2

Вы должны получить избавиться от; после if(str==5); Не должно быть;

for (int i=0; i<str; i++){ 
    if (str == 5) 
    { 
     break; 
    } 
} 

Дело в том, что ваша петля фактически не обрабатывает. Вы зацикливаете максимум 6 раз, но вы ничего не делаете в своем цикле. Вы не меняете свой результат на всех циклах, в этом случае совершенно бесполезен ...

Вы просто выходите из цикла for, а не цикла while. Если вы хотите, чтобы выйти из цикла в то время как вы должны сделать так:

Scanner sc = new Scanner (new File("c:/Users/ASUS/Desktop/Numbers.txt")); 
      while (sc.hasNextInt()){ 
       int str = sc.nextInt(); 
       System.out.print(str+ " "); 
       if (str == 5) 
       { 
        break; 
       } 
      }  
      sc.close(); 
     } 
} 
+1

Я бы предложил использовать фигурные скобки, чтобы избежать таких проблем. – starf

+0

Можете ли вы дать мне пример из-за того, что я все еще новичок – rickyhitman10

+0

thats does not work; – rickyhitman10

0

Просто ответить на примере ; после вашего если завершение это если заявление. Использование брекет {}

if(str==5){ 
    break; 
} 

так:

Scanner sc = new Scanner (new File("c:/Users/ASUS/Desktop/Numbers.txt")); 
     while (sc.hasNextInt()){ 
      int str = sc.nextInt(); 
       if (str == 5){ 
        break; 
       } 

      System.out.print(str+ " "); 
     }  
     sc.close(); 
    } 
} 

Альтернативный способ сделать это было бы загрузить всю линию, разделить на ,, а затем перебрать следующий массив и распечатать, если есть 5 и перерыв, если вы найдете его

0

Я думаю, что решение должно быть замкнуто до тех пор, пока номер не найден.

boolean foundFive = false; 
Scanner sc = new Scanner (new File("c:/Users/ASUS/Desktop/Numbers.txt")); 
while (sc.hasNextInt() && !foundFive) { 
    int number = sc.nextInt(); 
    System.out.print(number+ " "); 
    if (number == 5) { 
     foundFive = true; 
    } 
}  
sc.close(); 
+0

Думаю, вы могли бы найти foundFive = (number == 5;). Но это только мой разговор с OCD. –

Смежные вопросы