Java 为什么我的程序重复相同的结果?
该程序从用户输入中获取10个温度,计算平均值,然后打印出高于平均值的温度 由于某种原因,我看不到,当我输入三个温度(100、90、70按该顺序)时,我得到以下输出: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
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]);
};
};
};