0

我知道这是一个简单的问题,但我是 Java 新手,我很迷茫。如果用户没有输入“是”或“否”并返回到它要求进行另一个计算。我知道这是基本的,我尽我所能寻找答案,但我对 Java 术语的了解还不够。如果您能帮助我,我将不胜感激!

PS有人向我指出,我的变量不应该以大写字母开头,我知道并且将来不会这样做。

System.out.println(" The purpose of this program is to calculate the speed of sound through several mediums.\n The program user will input a distance in feet followed by a mediumd and the program will output the speed in feet per second and miles per hour\n");
//declare variables

Scanner keyboard = new Scanner(System.in);

final double Air = 1126.1;

final double Water = 4603.2;

final double Steel = 20013.3;

final double Earth = 22967.4;

double OneFootPerSecond = .68181818182;

double Distance;

double AirSpeed;

double WaterSpeed;

double SteelSpeed;

double EarthSpeed;

boolean shouldContinue = true;

while (shouldContinue == true){ 

System.out.print(" What is the distance in feet:" );
//ask the user to input variables


    while (!keyboard.hasNextDouble()){
    System.out.println("Please enter a valid numeric value, try again: ");
    keyboard.next();
    }
    Distance =keyboard.nextDouble();
    {
    System.out.print("Input the media: Air, Water, Steel, or Earth: ");
    String Input = keyboard.next();   



    switch(Input.toLowerCase())

     {

        case "air":
        AirSpeed = Distance/Air;
        System.out.print("\n \nThe time to for sound to travel ");
        System.out.print(Distance);
        System.out.print(" feet through AIR" +"\n");
        System.out.printf("%.6f", AirSpeed);
        System.out.print(" seconds or ");
        System.out.printf("%.1f", OneFootPerSecond*Air);
        System.out.print(" miles per hour."); 
        System.out.print("\n \nEnter Yes for another calculation, else No: ");
        String Another = keyboard.next();
        Another.toLowerCase();
       if (Another.equals("no")){
           shouldContinue = false;
                          }
      if (!Another.equals("no"))
          if (!Another.equals("yes"))
          {System.out.print("Invalid.");


          }


        break;



 case "water":
        WaterSpeed = Distance/Water;
        System.out.print("\nThe time to for sound to travel ");
        System.out.print(Distance);
        System.out.print(" feet through WATER" +"\n");
        System.out.printf("%.6f",WaterSpeed);
        System.out.print(" seconds or ");
        System.out.printf("%.1f", OneFootPerSecond*Water);
        System.out.print(" miles per hour."); 
        System.out.print("\n \nEnter Yes for another calculation, else No: ");
        Another = keyboard.next();
        Another.toLowerCase();
         if (Another.equals("yes")){
           shouldContinue = false;

       }
break;

 case "steel":
        SteelSpeed = Distance/Steel;
        System.out.print("\nThe time to for sound to travel ");
        System.out.print(Distance);
        System.out.print(" feet through STEEL" +"\n");
        System.out.printf("%.6f",SteelSpeed);
        System.out.print(" seconds or ");
        System.out.printf("%.1f",  OneFootPerSecond*Steel);
        System.out.print(" miles per hour."); 
        System.out.print("\n \nEnter Yes for another calculation, else No: ");
        Another = keyboard.next();
        Another.toLowerCase();
         if (Another.equals("yes")){
           shouldContinue = false;

       }
break;     

      case "earth":
        EarthSpeed = Distance/Water;
        System.out.print("\nThe time to for sound to travel ");
        System.out.print(Distance);
        System.out.print(" feet through EARTH" +"\n");
        System.out.printf("%.6f",EarthSpeed);
        System.out.print(" seconds or ");
        System.out.printf("%.1f",  OneFootPerSecond*Earth);
        System.out.print(" miles per hour."); 
        System.out.print("\n \nEnter Yes for another calculation, else No: ");
        Another = keyboard.next();
        Another.toLowerCase();
         if (Another.equals("yes")){
           shouldContinue = false;

       }
break;
default :
        System.out.print("Invalid. Re-run the program. ");                  
 break;                      
    }
   } 
4

1 回答 1

0

一个非常简单的解决方案将是一个小方法

让我给你看一个小例子:

public class Main {
    public static Scanner reader = new Scanner(System.in);
    public static void main(String... args) {
        // ...
        switch(somthing) {
        case "something":
            // ...
            if (!shallContinue()) return;
            break;
        case "something else":
            // ...
            if (!shallContinue()) return;
            break;
        default:
            // ...
            if (!shallContinue()) return;
        }
    }

    public static boolean shallContinue() {
        while (true) {
            System.out.println("Do you want to continue?");
            switch (reader.nextLine().toLowerCase()) {
            case "yes":
                return true;
            case "no":
                return false;
            }
        }
    }
}

基本上你调用一个函数,并根据你刚刚终止的结果。然后该函数进行实际的用户通信

于 2013-09-29T18:03:59.253 回答