2015-09-24 1 views
0

Вот мой код, он, кажется, не выполняет код, когда n> 0 sout.you введено положительное число, Или я думаю, что я делаю это неправильно?Java Ряд числа циклов

import java.util.Scanner; 
class speed { 
public static void main(String[] args) { 

Scanner x = new Scanner(System.in); 
int num; 
int neg = 0, count = 0, pos = 0; 

System.out.println("Enter any number to continue. Enter 0 to stop : "); 
num = x.nextInt(); 

if(num==0){ 
System.out.print("You immediately stop"); 
System.exit(0); 
} 

while (num != 0) { 
    count ++; 
    if (num > 0) { 
     pos ++; 
    } 
    if (num < 0) { 
     neg ++; 

    } 
    num = x.nextInt(); 
    if(count==1){ 
    } 
} 
if(count == 1 && num > 0) { 

     System.out.print("You entered a positive number"); 

    if(count ==1 && num < 0) { 
     System.out.print("You entered a negative number"); // this code is not performing why? 
    } 
System.exit(0); 
} 
System.out.printf("You Entered %d numbers\n",count); 
System.out.printf("%d positive \n",pos); 
System.out.printf("%d negative\n",neg); 
} 
} 

Вот выход, который у меня есть, что является правильным.

My output 
Enter a number to continue. Enter 0 to stop : 
5 
6 
-8 
0    // doesn't count as a number. 
You entered 3 numbers. 
2 positive 
1 negative 

НО В этой проблеме я хочу, чтобы результат был другим, если пользователь набрал только 1 номер.

What i want the output to be > 
Enter a number to continue. Enter 0 to stop : 
2 
0 
You Entered a positive number. // same with a negative number? 
+0

Вы проверяете, есть ли 'num <0' внутри if-блока, который проверяет, есть ли' num> 0'. 'num' не может быть как положительным, так и отрицательным. – azurefrog

+0

0 является положительным, поэтому для этого нужно считать num> -1 –

+0

@NoorNawaz. Он работает для положительного числа, но когда я вводил -2 и 0, он все равно дает мне «вы ввели положительное число», почему это? – Jake

ответ

1

При выходе из цикла в то время, 'Num' всегда равен нулю. Поэтому испытание

if(count == 1 && num > 0) 

всегда терпит неудачу. Попробуйте

if(count == 1) { 
    if (pos > 0) { 
     System.out.print("You entered a positive number"); 
    } else { 
     System.out.print("You entered a negative number"); 
    } 
} else { 
    //...put the code for more than one number here 
} 

Также линии

if(count==1){ 
} 

ничего не делать.

+0

Какое условие я должен использовать тогда? – Jake

+0

Написано в ответе. Вы должны думать о том, что именно вы пытаетесь протестировать. – DJClayworth

+0

Это правильно, но вывод для чисел NEG неправильно – Jake

-2

Вы можете попробовать следующий код

import java.util.Scanner; 
class speed { 
public static void main(String[] args) { 

Scanner x = new Scanner(System.in); 
int num; 
int neg = 0, count = 0, pos = 0; 

System.out.println("Enter any number to continue. Enter 0 to stop : "); 
num = x.nextInt(); 

if(num==0){ 
System.out.print("You immediately stop"); 
System.exit(0); 
} 

while (num != 0) { 
    count ++; 
    if (num > 0) { 
     pos ++; 
    } 
    if (num < 0) { 
     neg ++; 

    } 
    num = x.nextInt(); 
    if(count==1){ 
    } 
} 
if(count == 1 && num > 0) { 

     System.out.print("You entered a positive number"); 

    if(count ==1 && num < 0) { 
     System.out.print("You entered a negative number"); 
    } 
System.exit(0); 
} 

    System.out.println("You Entered "+pos+" positive numbers"); 
    System.out.println("You Entered "+neg+" negative numbers"); 
} 
} 
+0

Можете указать, что отличает ваш код? – DJClayworth