Java 接受一系列的数字?for循环

Java 接受一系列的数字?for循环,java,loops,for-loop,numbers,Java,Loops,For Loop,Numbers,我是编程新手,因此我不确定如何编写一个程序,该程序将接受一系列数字,并且仅当用户输入0时才会退出,然后显示在用户输入0之前输入了多少数字 我的代码: import java.util.Scanner; class Sample { public static void main(String[]args) { Scanner x = new Scanner(System.in); int y; int count = 0;

我是编程新手,因此我不确定如何编写一个程序,该程序将接受一系列数字,并且仅当用户输入0时才会退出,然后显示在用户输入0之前输入了多少数字

我的代码:

import java.util.Scanner;
class Sample {
    public static void main(String[]args) {
        Scanner x = new Scanner(System.in);
        int y;
        int count = 0;

        System.out.print("Enter any number to continue. Enter 0 to stop.");
        num = x.nextInt();
        for(int n = 0; n<=num; n++) { //is this for loop right?
            y = x.nextInt();
            count += y;
        }
        if(num == 0){
            System.out.printf("You entered %d numbers,count");
        }
    }
} // i know my code is missing alot. 
一些线索:

你的线路

num = x.nextInt();
可能会导致编译错误,因为您尚未声明变量
num

此外,当数值大于0时,循环应继续。为此,请使用while循环:

int num = 1; //some non-zero starting number
while (num != 0) {
    num = x.nextInt();
    count++;
}

您需要以两种方式重新编写逻辑,即插入时处理数字或插入0后处理所有数字 下面是插入的流程示例 While(true) { 读线 检查是否为零
打破 其他的 检查是否有异常 递增奇数计数 其他的 递增偶数计数 } 显示您想要的内容

System.out.println("Enter any number to continue. Enter 0 to stop.");
while (true) {
    int num = x.nextInt() ;

    if (num == 0) {
       break;
    }

    if (num % 2 == 0) {
       even++;
    } else {
       odd++;
    }

    count++;
}
第二种情况--

While(true) { 读线 检查是否为零
打破 其他的 在列表中添加“否” }

对于列表中的每个条目 { 检查是否有异常 递增奇数计数 其他的 递增偶数计数 }
显示您想要显示的内容代码是自描述的

System.out.println("Enter any number to continue. Enter 0 to stop.");
while (true) {
    int num = x.nextInt() ;

    if (num == 0) {
       break;
    }

    if (num % 2 == 0) {
       even++;
    } else {
       odd++;
    }

    count++;
}
public class Sample {
    public static void main(String[] args) {
        Scanner x = new Scanner(System.in);
        int odd = 0, even = 0, num = 0;
        System.out.println("Enter any number to continue. Enter 0 to stop.");
        while ((num = x.nextInt()) != 0) {

            if (num % 2 == 0) {
                even++;
            } else {
                odd++;
            }

        }
        System.out.printf("\nYou entered %d numbers\n", even + odd);
        System.out.printf("even %d\n", even);
        System.out.printf("odd %d\n", odd);

    }
}

很接近,只需获取每个计数的变量,并在while循环中检查它:

public static void main(String[] args) {
    Scanner x = new Scanner(System.in);
    int num = 0; // to store user's enter
    int odd = 0, count = 0, even = 0; // to store all counts

    System.out.print("Enter any number to continue. Enter 0 to stop.");
    // ask for first number
    num = x.nextInt();
    
    // loop until 0 is entered
    while (num != 0) {
        // each time sum 1 because new number entered
        count ++;
        // if num / 2 modulus is 0 then even number 
        if (num % 2 == 0) {
            even ++;
        // if num / 2 modulus is not 0 then odd number 
        } else {
            odd ++;
        }

        // ask for a new number
        num = x.nextInt();
    }

    // print the results
    System.out.printf("You entered %d numbers\n",count);
    System.out.printf("You entered %d even numbers\n",even);
    System.out.printf("You entered %d odd numbers\n",odd);
}
输出

Enter any number to continue. Enter 0 to stop.
12
11
5
6
1
0

You entered 6 numbers
You entered 2 even numbers
You entered 3 odd numbers

为什么投票结果如此接近?这可能是一个练习,但至少OP做了一个合理的尝试。@NickJ可能是因为海报没有提出问题或描述他们遇到了什么问题。