Java 为什么我的程序重复相同的结果?

Java 为什么我的程序重复相同的结果?,java,Java,该程序从用户输入中获取10个温度,计算平均值,然后打印出高于平均值的温度 由于某种原因,我看不到,当我输入三个温度(100、90、70按该顺序)时,我得到以下输出: 100 is an above average temperature. 100 is an above average temperature. 90 is an above average temperature. 但当我给出这个输入(按顺序是70、90、100)时,我得到 有人能帮我看看我不知道什么吗 import ja

该程序从用户输入中获取10个温度,计算平均值,然后打印出高于平均值的温度

由于某种原因,我看不到,当我输入三个温度(100、90、70按该顺序)时,我得到以下输出:

100 is an above average temperature.

100 is an above average temperature.

90 is an above average temperature.
但当我给出这个输入(按顺序是70、90、100)时,我得到

有人能帮我看看我不知道什么吗

import java.util.Scanner;


public class Lab9 
{
    public static int[] temps, aboveAvgTemps;
    public static int temp, totalTemp, avgTemp, currentTemp, oldTemp, numAboveAvg, 
        numOfEntries;

    public static void main(String[] args) 
    {
        System.out.println("Welcome to the above average temperature tester program.");
        System.out.println("Please in an integer for the number of days you wish to measure.");

        Scanner kb = new Scanner(System.in);

        numOfEntries = kb.nextInt();

        System.out.println("Please enter in " + numOfEntries + " temperatures.");

        //initialize main array and variables
        temps = new int[numOfEntries];
        totalTemp = 0;


        for(int i = 0; i < temps.length; i++)
        {
            System.out.println("Please enter in the temperature for day " + (i+1) + ":");
            temp = kb.nextInt();
            temps[i] = temp;
             totalTemp += temp;
        }       

        //final calculations
        avgTemp = totalTemp/numOfEntries;
        System.out.println("The average temperature is " + avgTemp);

        //count up num of above avg temps
        for(int i = 0; i < temps.length; i++)
        {
            if(temps[i] > avgTemp)
            {               
                numAboveAvg++;
            }
        }

        //initialize new array and variables for above avg temps
        aboveAvgTemps = new int[numAboveAvg];

        for(int i = 0; i < temps.length; i++)
        {
            if(temps[i] > avgTemp)
            {       
                for(int j = 0; j <= i; j++)
                {                   
                    aboveAvgTemps[j] = temps[j];
                    System.out.println(aboveAvgTemps[j] + " is an above average temperature.");
                }
            }
            else
            {
                System.out.println(temps[i] + " is not an above average temperature.");
            }
        }
    }
}
import java.util.Scanner;
公共类Lab9
{
公共静态int[]临时值,高于AVGTEMP;
公共静态int-temp、totalTemp、avgTemp、currentTemp、oldTemp、numAboveAvg、,
numOfEntries;
公共静态void main(字符串[]args)
{
System.out.println(“欢迎使用高于平均温度的测试程序”);
System.out.println(“请输入一个整数,表示您希望测量的天数。”);
扫描仪kb=新扫描仪(System.in);
numOfEntries=kb.nextInt();
System.out.println(“请输入”+numOfEntries+“温度”);
//初始化主数组和变量
temps=新整数[numOfEntries];
总温度=0;
对于(int i=0;iavgTemp)
{               
numAboveAvg++;
}
}
//为上述平均温度初始化新数组和变量
以上AVGTEMPS=新整数[numAboveAvg];
对于(int i=0;iavgTemp)
{       

对于(int j=0;j我不知道您试图用上面的avgtemps数组做什么。 此代码段中的for循环

if(temps[i] > avgTemp)
            {       
                for(int j = 0; j <= i; j++)
                {                   
                    aboveAvgTemps[j] = temps[j];
                    System.out.println(aboveAvgTemps[j] + " is an above average temperature.");
                }
            }
if(temps[i]>avgTemp)
{       

对于(int j=0;j我更改了最后一块代码:

//initialize new array and variables for above avg temps
        aboveAvgTemps = new int[numAboveAvg];

        int index = 0;
        for(int i = 0; i < temps.length; i++)
        {
            if(temps[i] > avgTemp)
            {
                    aboveAvgTemps[index] = temps[i];

                    System.out.println(aboveAvgTemps[index] + " is an above average temperature.");

                    index++;
            }
            else
            {
                System.out.println(temps[i] + " is not an above average temperature.");
            }
        }
//为上述平均温度初始化新数组和变量
以上AVGTEMPS=新整数[numAboveAvg];
int指数=0;
对于(int i=0;iavgTemp)
{
以上平均温度[指数]=临时温度[i];
System.out.println(高于avgtemps[索引]+“是高于平均温度的温度”);
索引++;
}
其他的
{
System.out.println(temps[i]+“不是高于平均温度的温度”);
}
}
当发现温度高于平均值1时,带有“J”变量的for循环最多执行i次。这会导致多次打印和越界异常。最后一个循环应为

for(int i = 0; i < temps.length; i++)
    {
        if(temps[i] > avgTemp)
        {
            System.out.println(temps[i] + " is an above average temperature.");
        }
        else
        {
            System.out.println(temps[i] + " is not an above average temperature.");
        }
    }
for(int i=0;iavgTemp)
{
System.out.println(temps[i]+“是高于平均温度的温度”);
}
其他的
{
System.out.println(temps[i]+“不是高于平均温度的温度”);
}
}

问题来自最后一个块,我将其更改为:

    int j = 0;
    for (int i = 0; i < temps.length; i++) {
        if (temps[i] > avgTemp) {
            aboveAvgTemps[j] = temps[i];
            System.out.println(aboveAvgTemps[j] + " is an above average temperature.");
            j++;
        } else {
            System.out.println(temps[i] + " is not an above average temperature.");
        }
    }
intj=0;
对于(int i=0;iavgTemp){
以上平均温度[j]=临时温度[i];
System.out.println(高于avgtemps[j]+“是高于平均温度的温度”);
j++;
}否则{
System.out.println(temps[i]+“不是高于平均温度的温度”);
}
}

这显然是一项作业。当我在学校做这些工作时,我们必须做的第一件事,也就是我们分数的50%,就是为我们的解决方案编写伪代码。即使在这之前,我认为对于新程序员来说,在拿到钥匙之前思考他们试图解决的问题是非常重要的董事会。据我所知,任务是:

  • 让用户输入一些温度
  • 求平均温度
  • 如果温度高于或低于平均值,则打印每个给定温度
  • 你有1和2;你的问题是3。如果你在编码之前就明确说明你想为3做什么,我认为一个好的描述应该是:

    对于用户输入的每个温度,如果高于平均值,则打印“温度高于平均值”,否则打印“温度低于平均值”

    考虑到这一点,很容易将其转换为代码:

    for(int i=0; i < i < temps.length; i++ ) { //for each temperature the user entered
        if(temps[i] > avgTemp){//if the temperature is above the average
            //print out the above average message
            System.out.println(temps[i] + " is an above average temperature.");
    
        }else{//otherwise if the temperature is below the average
            //print out the below average message
            System.out.println(temps[i] + " is a below average temperature.");
        }
    }
    
    for(int i=0;iavgTemp){//如果温度高于平均值
    //打印出高于平均水平的消息
    System.out.println(temps[i]+“是高于平均温度的温度”);
    }否则{//如果温度低于平均值,则为
    //打印出低于平均水平的消息
    System.out.println(temps[i]+“是低于平均温度的温度”);
    }
    }
    
    函数myFunction(){
    //排列
    变量温度=[temp[1]、temp[2]、temp[3];
    //元素数
    变量t_num=温度长度;
    //元素之和
    var t_sum=[t1,t2,t3].reduce(函数(){returna+b;},0);
    //元素的贪婪
    var t_avrg=t_总和/t_数量;
    //如果>Avarge,则发出警报
    对于(var i=0;it_avrg){
    警报(温度[x]);
    };
    };
    };
    
    欢迎使用StackOverflow。您是否在调试器中一行一行地检查了您的代码?这将帮助您比在此处提问更快地找到问题,这是您在发布此处之前应该做的。请访问并阅读以了解如何有效地使用此网站。您不应该在您的在
    i
    上循环。您还应该记录
    for(int i=0; i < i < temps.length; i++ ) { //for each temperature the user entered
        if(temps[i] > avgTemp){//if the temperature is above the average
            //print out the above average message
            System.out.println(temps[i] + " is an above average temperature.");
    
        }else{//otherwise if the temperature is below the average
            //print out the below average message
            System.out.println(temps[i] + " is a below average temperature.");
        }
    }
    
    function myFunction() {
    //array
    var temp = [temp[1], temp[2], temp[3]];
    //number of elements
    var t_num = temp.length;
    //sum of elements
    var t_sum = [t1, t2, t3].reduce(function(){return a + b;}, 0);
    //avarage of elements
    var t_avrg = t_sum / t_num;
    //alert if > avarage
    for (var i=0; i < t_num; i++){
        if (temp[x] > t_avrg){
            alert(temp[x]);
        };
    };
    };