2016-09-29 3 views
0

Это код для печати №. простых чисел из набора чисел, введенных программой пользователя, останавливается при вводе 0. Счетчик переменных не обновляется, а результат остается 0. Как обновить значение счетчика?Как изменить переменную счетчика после ее изменения?

class Prog4 { 

    public static void main(String a[]){ 
     int c=0; 
     //int[] array=new int[10]; 
     int counter=0; 
     Scanner b=new Scanner(System.in); 
     System.out.println("Enter the numbers"); 
     c=b.nextInt(); 
     while(c!=0){ 
      boolean y=false; 
      for(int j=2;j<c;j++){ 
       if(c%j==0) 
        y=true; 
       } 
      if(y=false){ 
       counter++; 
       //array[counter-1]=c; 
       }  
      c=b.nextInt(); 
      } 
     System.out.println("No. of prime numbers entered :" + counter); 
     //System.out.println("The prime numbers are : "); 
     //for(int x:array) 
      //System.out.println(x);  
    } 

} 
+3

'y == false', а не' y = false'. Первое - это сравнение, последнее - задание. Поскольку вы 'y' false после' y = false', условие не запускается. Однако не используйте 'if (y == false)' либо, используйте 'if (! Y)', что позволяет избежать случайного назначения. –

+0

bcz Ваше состояние в то время как (c! = 0), и поэтому он не входит в цикл и, следовательно, ecounter не обновляется – mhasan

+0

... и именно по этой причине постоянное выражение должно оставаться на левой стороне при сравнении значений ('if (false == value)'), даже в Java. – Turing85

ответ

0

ли это:

public class Prog4 { 

    public static void main(String[] args) { 
     int c = 0; 
     int[] array = new int[10]; 
     int counter = 0; 
     System.out.println("Enter the numbers:"); 
     do { 
      Scanner b = new Scanner(System.in); 
      c = b.nextInt(); 
      boolean y = false; 
      for (int j = 2; j < c; j++) { 
       if (c % j == 0) 
        y = true; 
      } 
      if (y == false && c != 0) { 
       counter++; 
       array[counter - 1] = c; 
      } 
     } while (c != 0); 
     System.out.println("No. of prime numbers entered:" + counter); 
     System.out.println("The prime numbers are: "); 
     for (int i = 0; i < counter; i++) 
      System.out.println(array[i]); 
    } 

} 

Вход:

Enter the numbers: 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
0 

Выход:

No. of prime numbers entered: 6 
The prime numbers are: 
1 
2 
3 
5 
7 
11 

В принципе, это было неправильно:

  1. Сканер был вне петли;
  2. И вы использовали «if (y = false)» вместо «if (y == false)».