Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当没有输入正数时,如何显示正确的输出_Java_While Loop_Average - Fatal编程技术网

Java 当没有输入正数时,如何显示正确的输出

Java 当没有输入正数时,如何显示正确的输出,java,while-loop,average,Java,While Loop,Average,我不熟悉编码。赋值是计算输入的所有正数的平均值,并在输入零时退出。如果没有输入正数,则显示消息“无法平均” 以下是我到目前为止的情况。当只输入零或负数时,我被打印出“无法计算平均值”的信息所困扰 public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int numbers = 0; int sumOfNumbers = 0; double average

我不熟悉编码。赋值是计算输入的所有正数的平均值,并在输入零时退出。如果没有输入正数,则显示消息“无法平均”

以下是我到目前为止的情况。当只输入零或负数时,我被打印出“无法计算平均值”的信息所困扰

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int numbers = 0;
    int sumOfNumbers = 0;
    double averagePositive = 0;
    while (true) {
        System.out.println("Give a number: ");
        int number = Integer.valueOf(scanner.nextLine());
        if (number == 0)
            break;

        if (number > 0)
            sumOfNumbers = number + sumOfNumbers;

        if (number > 0)
            numbers = numbers + 1;

        if (number > 0)
            averagePositive = (double)sumOfNumbers / (double)numbers;
    }   
    System.out.println(averagePositive);
}
试一下如下

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    System.out.print("Give a number: ");
    int num=input.nextInt();
    int tot=0; //total
    int count=0; // counting the positive numbers
    if(num>0){
         while(num!=0){
             tot+=num;
             count++;
             System.out.print("Give a number: ");
             num=input.nextInt();
             if(num<0){
              System.out.print("Not possible");
              return;
              }
         }
         double avg =(double)tot/n;
         System.out.print("Average: "+avg);

    }else{
         System.out.println("Cannot calculate the average.");
    }

}
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(System.in);
系统输出打印(“给出一个数字:”);
int num=input.nextInt();
int tot=0;//总计
int count=0;//计算正数
如果(数值>0){
while(num!=0){
tot+=num;
计数++;
系统输出打印(“给出一个数字:”);
num=input.nextInt();

if(num我可能会这样做以保持简单。一般来说,尽量不要将代码压缩在一起。大多数正式项目需要一定程度的样式,通常需要运算符和大括号之间的空格等。从长远来看,它使代码更具可读性,更易于维护

在您的代码中,如果测试次数大于0,则无需重复相同的测试多次,它们可以捆绑在一起。如果程序更大、更复杂,我可能会对变量名称进行更多限定,但对于这样的短程序,简短的名称就足够清晰

continue
break
是控制循环行为的重要关键字,可用于增加简洁性和清晰度。
continue
立即返回循环顶部,
break
立即退出最里面的循环。
double
除以
int
得到
double
所以我能够消除一个强制转换。而
+=
操作符使这行代码更容易阅读

同样在Java和C中,任何包含一行的
if()
else
子句都不需要大括号,除非一个程序的嵌套方式增加了大括号的清晰度,否则在这种情况下省略大括号通常更为清晰。
if
语句在一条语句中说明了这两种方式

import java.util.Scanner;
public class avg 
{
    static int count = 0;
    static double sum = 0;

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.println("\nEnter a sequence of positive numbers (0 to calculate average):\n");

        while (true) {
            System.out.print("Number? ");
            int n = scanner.nextInt();
            if (n < 0) {
                System.out.println("Negative numbers not allowed.");
                continue;
            } else if (n == 0)
                break;

            sum += (double)n;
            ++count;
        }           

        System.out.println("Average of " + count + " numbers = " + 
            (double)(sum / count) + "\n");


        System.exit(1);
    }
}
import java.util.Scanner;
公共类平均值
{
静态整数计数=0;
静态双和=0;
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
System.out.println(“\n输入一个正数序列(0计算平均值):\n”);
while(true){
系统输出打印(“数字”);
int n=scanner.nextInt();
if(n<0){
System.out.println(“不允许使用负数”);
继续;
}else如果(n==0)
打破
和+=(双)n;
++计数;
}           
System.out.println(““+count+”数字的平均值=“+
(双倍)(总和/计数)+“\n”);
系统出口(1);
}
}
样本输出:

$ java avg Enter a sequence of positive numbers (0 to calculate average) Number? 1 Number? 2 Number? 3 Number? 4 Number? 5 Number? -6 Negative numbers not allowed. Number? 0 Average of 5 numbers = 3.0 $java平均值 输入正数序列(0计算平均值) 1号 2号 3号 4号 5号 数字?-6 不允许使用负数。 数字?0 5个数字的平均值=3.0
欢迎来到StackOverflow。对于任何问答,如果任何答案对您有帮助,请单击向上箭头向上投票(如果您在网站上看到任何您喜欢的问题,请向上投票)。如果您认为答案能为您解决问题,请单击它旁边的复选标记以接受它作为解决方案。这鼓励人们通过帮助他们获得声誉来回答问题。