当总和超过 100 时,如何让此代码停止输入并仍然执行总和和平均值? [英] How do I get this code to stop input when the sum exceeds 100 and still preform the sum and average?
问题描述
我已经在这里呆了几个小时了!!!!对赋值的更新指出,当用户输入的值超过 100 时,我们需要停止用户输入.如果不重写整个内容,我该如何循环"它?我知道代码是方法繁重的,但这是分配的要求.我想我的大脑只是java汤!任何帮助都会很棒:)
I have been at this for hours!!!! An update to the assignment states that we need to stop the user input when their values exceed 100. Without rewriting the whole thing, how do I "loop" this in? I know the code is method heavy but it was a requirement for the assignment. I think my brain is just java-soup! Any help would be AWESOME :)
public static void main(String[] args) {
//Use Main Method for gathering input
float input = 1;
// Declare variable for sum
float theSum = 0;
// Declare variable for average
float average = 0;
// Declare variable for counting the number of user inputs
int counter = 0;
/* Initialize the while loop using an input of 0 as a sentinel value
* to exit the loop*/
while (input != 0) {
// Use JOptionPane method to accept input from user
input = Float.parseFloat(
JOptionPane.showInputDialog(
null, "Please enter a number. Enter 0 to quit: "));
// Invoke sum method and pass input and summation to sum method
theSum = (sum(input, theSum));
// Invoke avg method and pass summation and counter to avg
average = (avg(theSum, counter));
// Increment the counter variable
counter++;
}
// Invoke display method and pass summation, average, and counter variables to it
display(theSum, average, counter);
}
public static float sum(float num1, float sum) {
//Add the user's input number to the sum variable
sum += num1;
//Return value of sum variable as new summation variable
return sum;
}
public static float avg(float num1, int num2) {
//Declare and initialize variable for average
float average = 0;
//Calculate average
average = num1 / num2;
//Return value of average variable
return average;
}
public static void display(float sum, float average, int counter) {
/* I am subtracting 1 from variable counter so as not to include the sentinel value
* of 0 that the user had to enter to exit the input loop in the overall count*/
// Display the count, sum, and average to the user
JOptionPane.showMessageDialog(null, "Count = " + (counter - 1) + ", Sum = " + sum + ", Average = " + average);
// Test to see if sum is greater than 100 and if so, display alert to user
if (sum > 100) {
JOptionPane.showMessageDialog(null, "The sum of your numbers is greater than 100!");
}
}
}
如果我在 counter++ 之后输入这个用户在第一次输入后收到这个消息......我做错了什么!!!!!!
if I enter this after counter++ The user gets this message after the 1st input...WHAT AM I DOING WRONG!!!!!!
if (theSum > 100)
break;
JOptionPane.showMessageDialog(null, "The sum of your numbers is greater than 100!");
中断的问题在于 "JOptionPane.showMessageDialog(null, "The sum of your numbers is大于 100!");" 一段代码导致了一些输出问题,当休息后立即放置.现在的问题是 sum>100 的平均值输出的是和,而不是平均值.它适用于总和<=100...WTH?!?!:)
The problem with the break was that the "JOptionPane.showMessageDialog(null, "The sum of your numbers is greater than 100!");" piece of code was causing some out put issues when placed immediately after the break. Now the trouble is that the average for the sum>100 is outputting the sum, not average. It works fine for the sum<=100...WTH?!?! :)
现在代码如下:
public static void main(String[] args) {
//Use Main Method for gathering input
float input = 1;
// Declare variable for sum
float theSum = 0;
// Declare variable for average
float average = 0;
// Declare variable for counting the number of user inputs
int counter = 0;
/* Initialize the while loop using an input of 0 as a sentinel value
* to exit the loop*/
while (input != 0) {
// Use JOptionPane method to accept input from user
input = Float.parseFloat(
JOptionPane.showInputDialog(
null, "Please enter a number. Enter 0 to quit: "));
// Invoke sum method and pass input and summation to sum method
theSum = (sum(input, theSum));
// Invoke avg method and pass summation and counter to avg
average = (avg(theSum, counter));
// Increment the counter variable
counter++;
if (theSum > 100)
break;
}
// Invoke display method and pass summation, average, and counter variables to it
display(theSum, average, counter);
}
public static float sum(float num1, float sum) {
//Add the user's input number to the sum variable
sum += num1;
//Return value of sum variable as new summation variable
return sum;
}
public static float avg(float num1, int num2) {
//Declare and initialize variable for average
float average = 0;
//Calculate average
average = num1 / num2;
//Return value of average variable
return average;
}
public static void display(float sum, float average, int counter) {
/* I am subtracting 1 from variable counter so as not to include the sentinel value
* of 0 that the user had to enter to exit the input loop in the overall count*/
// Display the count, sum, and average to the user
if (sum >100)
JOptionPane.showMessageDialog(null, "Count = " + (counter) + ", Sum = " + sum + ", Average = " + average);
if (sum <= 100)
JOptionPane.showMessageDialog(null, "Count = " + (counter-1) + ", Sum = " + sum + ", Average = " + average);
}
}
推荐答案
在带有 if
条件的 while
循环中使用 break
语句检查总和>100
.希望这些提示将帮助您获得所需的行为.由于您还需要计算平均值,因此将中断逻辑放在 avg 后:
Use a break
statement in your while
loop with a if
condition to check the
thesum > 100
. Hope this much of hint will help you to get the desired behavior. As you need to calculate the average also, so put the break logic post avg:
while (input != 0) {
// Use JOptionPane method to accept input from user
input = Float.parseFloat(
JOptionPane.showInputDialog(
null, "Please enter a number. Enter 0 to quit: "));
// Invoke sum method and pass input and summation to sum method
theSum = (sum(input, theSum));
// Invoke avg method and pass summation and counter to avg
average = (avg(theSum, counter));
// Increment the counter variable
counter++;
if (theSum > 100)
break;
}
// Invoke display method and pass summation, average, and counter variables to it
display(theSum, average, counter);
这篇关于当总和超过 100 时,如何让此代码停止输入并仍然执行总和和平均值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!