Java codeLab中不接受降雨计划
我正在完成MyProProgrammingLab的一项任务: 编写具有以下字段的雨量类: •存储12个月内每个月降雨量的双倍阵列 年份(第一个指数对应于1月,第二个指数对应于 二月等) 该类还应具有以下方法: •返回全年总降雨量的方法 •返回当年月平均降雨量的方法 •以字符串形式返回降雨量最多的月份的方法 •将降雨量最少的月份作为字符串返回的方法 在一个程序中演示该类,该程序从用户处获取12个双倍(取 按一年中的月份顺序加倍,第一个对应于 一月份的降雨量等)。执行输入验证:如果用户输入负数 数字,忽略它,并继续要求他们输入,直到你有12个 非负双打 一旦用户为您提供了所有12个双倍,创建一个降雨实例 类并调用其方法,打印出总降雨量、平均降雨量 月降雨量、降雨量最多的月份和降雨量最少的月份 雨,每一个都在一条单独的线上 这是我的程序,它在netbeans上运行良好,但被codeLab拒绝:Java codeLab中不接受降雨计划,java,Java,我正在完成MyProProgrammingLab的一项任务: 编写具有以下字段的雨量类: •存储12个月内每个月降雨量的双倍阵列 年份(第一个指数对应于1月,第二个指数对应于 二月等) 该类还应具有以下方法: •返回全年总降雨量的方法 •返回当年月平均降雨量的方法 •以字符串形式返回降雨量最多的月份的方法 •将降雨量最少的月份作为字符串返回的方法 在一个程序中演示该类,该程序从用户处获取12个双倍(取 按一年中的月份顺序加倍,第一个对应于 一月份的降雨量等)。执行输入验证:如果用户输入负数 数字
import java.text.DateFormatSymbols;
import java.util.Scanner;
public class RainFall {
final private double[] rainFall;
public RainFall(double[] arr) {
rainFall = arr;
}
public double getTotalRain() {
double total = 0;
for(int i=0;i<rainFall.length;i++)
total = total + rainFall[i];
return total;
}
public double getAverageRain() {
double average = 0;
for(int i=0;i<rainFall.length;i++)
average = average + rainFall[i];
return average/rainFall.length;
}
public String getHighestRain() {
int j=0;
for(int i=0;i<12;i++)
if(rainFall[i]>rainFall[j])
j=i;
return new DateFormatSymbols().getMonths()[j];
}
public String getLowestRain() {
int j=1;
for(int i=0;i<12;i++)
if(rainFall[i]<rainFall[j])
j=i;
return new DateFormatSymbols().getMonths()[j];
}
public static void main(String[] args) {
Scanner myScan = new Scanner(System.in);
double[] rainfallInput = new double[12];
for(int i=1;i<=12;i++) {
System.out.print("Enter rainfall for month " + i + ":");
rainfallInput[i-1]=myScan.nextDouble();
myScan.nextLine();
if(rainfallInput[i-1]<0) {
System.out.print("Enter rainfall for month " + i + :");
rainfallInput[i-1]=myScan.nextDouble();
myScan.nextLine();
}
}
RainFall rain = new RainFall(rainfallInput);
System.out.println(rain.getTotalRain());
System.out.println(rain.getAverageRain());
System.out.println(rain.getHighestRain());
System.out.println(rain.getLowestRain());
}
}
导入java.text.DateFormatSymbols;
导入java.util.Scanner;
公共级降雨{
最终降雨量;
公众降雨量(双[]arr){
降雨量=arr;
}
公共双getTotalRain(){
双倍合计=0;
对于(int i=0;i我假设您的答案被拒绝,因为您最终可以在第二次RainalInput[i-1]=myScan.nextDouble();
尝试使用do while循环,而不是连续地请求一个正数
public static void main(String[] args) {
Scanner myScan = new Scanner(System.in);
double[] rainfallInput = new double[12];
for (int i = 0; i < 12; i++) {
double input;
do {
System.out.print("Enter rainfall for month " + (i + 1) + ":");
input = myScan.nextDouble();
myScan.nextLine();
// Optionally tell why you are repeating input
/*
if (input <= 0) {
System.out.println("You must enter a positive value");
}
*/
} while (input <= 0);
rainfallInput[i] = input;
}
RainFall rain = new RainFall(rainfallInput);
System.out.println(rain.getTotalRain());
System.out.println(rain.getAverageRain());
System.out.println(rain.getHighestRain());
System.out.println(rain.getLowestRain());
}
public double getTotalRain() {
double total = 0;
for (int i = 0; i < rainFall.length; i++) {
total += rainFall[i];
}
return total;
}
public double getAverageRain() {
return getTotalRain() / (1.0 * rainFall.length);
}
public String getHighestRain() {
double max = Double.MIN_VALUE;
int maxIndex = 0;
for (int i = 0; i < rainFall.length; i++) {
double amount = rainFall[i];
if (amount > max) {
max = amount;
maxIndex = i;
}
}
return DateFormatSymbols.getInstance().getMonths()[maxIndex];
}
public String getLowestRain() {
double min = Double.MAX_VALUE;
int minIndex = 0;
for (int i = 0; i < rainFall.length; i++) {
double amount = rainFall[i];
if (amount < min) {
min = amount;
minIndex = i;
}
}
return DateFormatSymbols.getInstance().getMonths()[minIndex];
}
publicstaticvoidmain(字符串[]args){
Scanner myScan=新扫描仪(System.in);
double[]rainfallInput=新的double[12];
对于(int i=0;i<12;i++){
双输入;
做{
系统输出打印(“输入月份降雨量”+(i+1)+“:”;
input=myScan.nextDouble();
myScan.nextLine();
//有选择地告诉您重复输入的原因
/*
如果(输入在for
循环中去掉myScan.nextLine();
,代码实验室将接受它。添加拒绝原因的具体细节?“如果用户输入负数,忽略它并继续要求他们输入,直到”-您只需重复提示一次,而不是无限期地重复,直到输入一个正值。我猜您是对的!但它仍然被拒绝,我得到的唯一解释是:逻辑错误.Hmm.可能是您的一个最小/最大函数出错了。我更新了其余的函数。真的感谢您的快速帮助!我尝试过,但仍然没有任何结果,但现在我得到的输出应该是:输入·降雨·月份·1:输入·降雨·月份·2:输入·降雨·月份·3:输入·降雨·月份·4:输入·降雨·月份·mo第n·5:输入·降雨·月份·6:输入·降雨·月份·7:输入·降雨·月份·8:输入·降雨·月份·9:输入·降雨·月份·10:输入·降雨·月份·11:输入·降雨·月份·12:41.88↵ 3.49↵ 七月↵ 四月↵