满足特定条件时添加消息(Java)

时间:2017-01-16 20:52:35

标签: java

这里有新手,请原谅这个愚蠢的问题。作为练习,我必须制作一个程序(使用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);
    }
}

4 个答案:

答案 0 :(得分:0)

好消息是你可能已经做了最难的部分。 :)但是,我不想放弃太多,所以......

您是否了解过控制流程?我假设你可能有一点点,因为你正在使用dowhile。我建议先看看以下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);  
    }

}