这里有新手,请原谅这个愚蠢的问题。作为练习,我必须制作一个程序(使用do和while循环),计算输入和输出的数字的平均值,当用户输入0时。我想出了第一部分:)练习的第二部分是改变如果用户在键入任何其他数字之前键入0,则显示错误消息的程序。你能否向我解释一下,实现这一目标最简单的方法是什么?如果你提供的代码很棒,但我也想要一个解释,所以我实际上是在理解我需要做什么。 谢谢!这是代码:
import java.util.Scanner;
public class totalave1 {
public static void main(String[] args) {
int number, average, total = 0, counter = 0;
Scanner fromKeyboard = new Scanner(System.in);
do {
System.out.println("Enter number to calculate the average, or 0 to exit");
number = fromKeyboard.nextInt();
total = total + number;
counter = counter + 1;
average = (total) / counter;
} while (number != 0);
System.out.println("The average of all numbers entered is: " + average);
}
}
答案 0 :(得分:0)
好消息是你可能已经做了最难的部分。 :)但是,我不想放弃太多,所以......
您是否了解过控制流程?我假设你可能有一点点,因为你正在使用do
和while
。我建议先看看以下Java文档:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html
然后,查看您当前的解决方案,并尝试使用if
语句来考虑您将使用哪些条件来显示错误消息。你怎么知道用户键入0?你怎么知道他们进入的第一件事?您现在有哪些变量可以帮助您,或者您是否需要创建一个新变量?
我知道这不是代码答案,但你已经在第一部分做得很好了。如果您需要进一步的帮助,请告诉我们。
答案 1 :(得分:0)
练习的第二部分是更改要显示的程序 如果用户在键入任何其他数字之前键入0,则会显示错误消息。
目前尚不清楚:
在第一种情况下,只需在此指令后添加条件:number=fromKeyboard.nextInt();
:
do{
System.out.println("Enter number to calculate the average, or 0 to exit");
number=fromKeyboard.nextInt();
if (number == 0 && counter == 0){
System.out.println("Must not start by zero");
return;
}
...
} while (number!=0);
在第二种情况下,您可以传递到下一次迭代以获取新输入。 为了允许进入下一次迭代,只需将数字从零更改为不等于零的任何值,以便while条件为真。
do{
System.out.println("Enter number to calculate the average, or 0 to exit");
number=fromKeyboard.nextInt();
if (number == 0 && counter == 0){
System.out.println("Must not start by zero");
number = 1;
continue;
}
...
} while (number!=0);
答案 2 :(得分:0)
这是一个简单的程序,可以扩展到您的程序,但使用nextDouble()
代替nextInt()
,这样您也可以输入带小数点的数字。它还会提示用户是否输入了无效输入(不是数字):
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Java_Paws's Average of Numbers Program");
System.out.println("======================================");
System.out.println("Usage: Please enter numbers one per line and enter a 0 to output the average of the numbers:");
double total = 0.0;
int count = 0;
while(scanner.hasNext()) {
if(scanner.hasNextDouble()) {
double inputNum = scanner.nextDouble();
if(inputNum == 0) {
if(count == 0) {
System.out.println("Error: Please enter some numbers first!");
} else {
System.out.println("\nThe average of the entered numbers is: " + (total / count));
break;
}
} else {
total += inputNum;
count++;
}
} else {
System.out.println("ERROR: Invalid Input");
System.out.print("Please enter a number: ");
scanner.next();
}
}
}
}
试试here!
答案 3 :(得分:0)
阅读后不要写下代码,如果你不能看到代码。
首先,您必须了解flow control
。其次,您必须检查用户是否在输入少量数字后输入0
,因为您必须有if condition
。如果当前数字为0
且在任何其他数字之前输入,那么您必须将其余代码留在循环中并继续下一次迭代。
import java.util.Scanner;
public class totalave1
{
public static void main (String[]args)
{
int number, average, total=0, counter=0;
boolean firstTime = true;
Scanner fromKeyboard=new Scanner (System.in);
do{
System.out.println("Enter number to calculate the average, or 0 to exit");
number=fromKeyboard.nextInt();
if(firstTime && number==0){
System.out.println("error enter number first");
number = -1;
continue;
}
firstTime = false;
total=total+number;
counter=counter+1;
average=(total)/counter;
} while (number!=0);
System.out.println("The average of all numbers entered is: "+average);
}
}