所以我是Java编程的新手,来自Python,还有一些我无法理解的概念。
我正在编写一个程序,允许用户输入任意数量的数字,程序应输出所有数字的平均值。我使用while循环来循环用户输入的次数,但是我需要一种退出循环的方法,以便程序可以继续计算所有输入的平均值。我决定如果用户输入" ="标志而不是数字,然后程序将突破循环,但由于Scanner变量正在寻找一个双重,并且" ="标志不是数字,我必须使它成为一个字符串。但是因为Scanner正在寻找一个双重程序,程序在遇到" ="时会抛出一个错误。
当用户键入" ="?时,如何让程序退出循环?我知道我可以让用户输入一个打破循环的数字,但是如果它是一个真实的世界程序并且用户输入了一个数字,那么在计算平均值时它将计算该数字以及之前的数字。我到目前为止的代码如下:
import java.util.Scanner;
// imports the Scanner class
public class Average{
public static void main(String[] args){
double num, total = 0, noOfInputs = 0, answer;
Scanner scanner = new Scanner(System.in);
while(true){
System.out.print("Enter number: ");
//Prompts the user to enter a number
num = scanner.nextDouble();
/*Adds the number inputted to the "num" variable. This is the
source of my problem*/
if(num.equals("=")){
break;}
/*The if statement breaks the loop if a certain character is
entered*/
total = total + num;
//Adds the number inputted to the sum of all previous inputs
noOfInputs++;
/*This will be divided by the sum of all of the numbers because
Number of inputs = Number of numbers*/
}
answer = total / noOfInputs;
System.out.print(answer);
}
}
答案 0 :(得分:2)
有几种方法可以做到这一点。
您可以将每个数字作为字符串读取,然后如果是数字,则解析它以获取值。
Integer.parseInt(String s)
或者您可以检查接下来会发生什么并相应地阅读:
while (scanner.hasNext()) {
if (sc.hasNextInt()) {
int a = scanner.nextInt();
} else if (scanner.hasNextLong()) {
//...
}
}
或者你可以抓住InputMismatchException
,并从那里开始工作。
try{
...
} catch(InputMismatchException e){
//check if '=' ...
}