【问题标题】:how to call a method from a menu of methods?如何从方法菜单中调用方法?
【发布时间】:2017-06-07 21:39:06
【问题描述】:

我正在学习方法,并正在尝试制作一个可以进行简单转换的方法菜单。我不知道如何从菜单中调用方法并使其执行功能。我想知道如何调用一个方法并使其运行在不使用扫描程序类的输入下运行,除了 main。

public static void main(String[] args) {
    displayMenu();
    Scanner keyboard = new Scanner(System.in);
    int selection = keyboard.nextInt();
    switch(selection) {
    case 1:
        FahrToCel();
        break;
    case 2:
        CelToFahr();
        break;
    case 3:
        LbToKilo();
        break;
    case 4:
        KiloToLb();
        break;
   }


}

public static void displayMenu() {
    System.out.println("Enter 1 for Fahrenheit to Celsius" ); 
    System.out.println("Enter 2 for Celsius to Fahrenheit");
    System.out.println("Enter 3 for lb to kg");
    System.out.println("Enter 4 for kg to lb");
    return;

public static double FahrToCel() {

    double Fahrenheit = ???;
    double Celsius = 5 * (Fahrenheit - 32) / 9;  

    return Celsius;

}

public static double CelToFahr() {
    double Celsius = ???;
    double Fahrenheit = (9 * Celsius / 5) + 32;
    return Fahrenheit;

}

public static double LbtoKilo() {
    double pounds = ???;
    double factor = 0.454;
    double Kilogram = pounds * factor;

    return Kilogram;

}
public static double KiloToLb() {
    double kilograms = ???;
    double factor = 0.454;
    double Pound = kilograms / factor;
    return Pound;

}

??? 是我想要获取用户输入的变量,但我知道如何在不在每种方法中创建新的 Scanner 的情况下做到这一点。

了解如何获取方法中的输入。

当我运行代码时,我得到了 displayMenu 选项,我可以输入 1,2,3,4 但之后什么都没有发生

【问题讨论】:

  • Welcome to StackOverflow。请阅读我们的How to Ask 页面以获取有关如何改进您的问题的提示。好的问题往往会从社区中产生更快、更好的答案。
  • @ochi 嗨,对不起,我忘了说我想进行这些用户输入,但我不知道该怎么做。
  • “idk”?完整的单词是更好的方法。
  • 我刚刚添加了一个答案......它可能会帮助你

标签: razor


【解决方案1】:

您可能想让您的代码像这样。您的问题是您实际上并没有提供任何要转换的值,但这应该可以解决它。

public static void main(String[] args) {
    displayMenu();
    double result;
    Scanner keyboard = new Scanner(System.in);
    int selection = keyboard.nextInt();
    System.out.println("What number do you want converted?");
    int toBeConverted = keyboard.nextInt();
    switch(selection) {
    case 1:
        result = fahrToCel(toBeConverted);
        break;
    case 2:
        result = celToFahr(toBeConverted);
        break;
    case 3:
        result = lbToKilo(toBeConverted);
        break;
    case 4:
        result = kiloToLb(toBeConverted);
        break;
   }
   System.out.println(result);

}

public static void displayMenu() {
    System.out.println("Enter 1 for Fahrenheit to Celsius" ); 
    System.out.println("Enter 2 for Celsius to Fahrenheit");
    System.out.println("Enter 3 for lb to kg");
    System.out.println("Enter 4 for kg to lb");
    return;
}

public static double fahrToCel(int fahrenheit) {

    double celsius = 5 * (fahrenheit - 32) / 9;  

    return celsius;

}

public static double celToFahr(int celsius) {
    double fahrenheit = (9 * celsius / 5) + 32;
    return fahrenheit;

}

public static double lbtoKilo(int lb) {
    double factor = 0.454;
    double kilogram = lb * factor;

    return kilogram;

}
public static double kiloToLb(int kilo) {
    double factor = 0.454;
    double pound = kilo / factor;
    return pound;

}  

我还将您所有的变量和方法名称都设为小写,因为这是一种很好的编码习惯。在传统的 Java 实践中,通常只有类名大写。没有实际的好处,但当然最好遵循惯例。

【讨论】:

  • system.out.print(result);给我一个未解决的编译问题?说变量没有初始化
【解决方案2】:

正如@JoshKopen 所说,您没有提供要转换的值,我的答案几乎相同,只是更具体一点,并使用 double 值而不是 int 以获得更高的精度。

试试这个:

public static void main(String[] args) {
    displayMenu();
    Scanner keyboard = new Scanner(System.in);
    int selection = keyboard.nextInt();
    double value;
    switch(selection) {
    case 1:
        System.out.println("Enter the Fahrenheit value:");
        value = keyboard.nextDouble();
        FahrToCel(value);
        break;
    case 2:
        System.out.println("Enter the Celsius value:");
        value = keyboard.nextDouble();
        CelToFahr(value);
        break;
    case 3:
        System.out.println("Enter the Lb value:");
        value = keyboard.nextDouble();
        LbToKilo(value);
        break;
    case 4:
        System.out.println("Enter the Kilo value:");
        value = keyboard.nextDouble();
        KiloToLb(value);
        break;
   }


}

public static void displayMenu() {
    System.out.println("Enter 1 for Fahrenheit to Celsius" ); 
    System.out.println("Enter 2 for Celsius to Fahrenheit");
    System.out.println("Enter 3 for lb to kg");
    System.out.println("Enter 4 for kg to lb");
    return;
}
public static double FahrToCel(double fValue) {

    double Fahrenheit = fValue;
    double Celsius = 5 * (Fahrenheit - 32) / 9;  

    return Celsius;

}

public static double CelToFahr(double cValue) {
    double Celsius = cValue;
    double Fahrenheit = (9 * Celsius / 5) + 32;
    return Fahrenheit;

}

public static double LbtoKilo(double lValue) {
    double pounds = lValue;
    double factor = 0.454;
    double Kilogram = pounds * factor;

    return Kilogram;

}
public static double KiloToLb(double kValue) {
    double kilograms = kValue;
    double factor = 0.454;
    double Pound = kilograms / factor;
    return Pound;

}

【讨论】:

    【解决方案3】:

    我刚去把菜单弄得有点脏:)

    package com.boeing.tbng.ddm.ms;
    
    import java.util.Scanner;
    
    
    public class StackOverflow {
    
        private static final int FACTOR_FARENHEIT = 32;
        private static final double FACTOR = 0.454;
    
        public static void main(String[] args) {
            StackOverflow so = new StackOverflow();
            int selection;
    
            Scanner keyboard = new Scanner(System.in);
    
            do{
                /* request user input */
                so.displayMenu();
    
                /* read input */
                selection = keyboard.nextInt();
    
                System.out.print(selection + ") ");
                /* choose path based on selection */
                switch(selection) {
                    case 1:
                        so.FahrToCel(keyboard);
                        break;
                    case 2:
                        so.CelToFahr(keyboard);
                        break;
                    case 3:
                        so.LbToKilo(keyboard);
                        break;
                    case 4:
                        so.KiloToLb(keyboard);
                        break;
                    case 9:
                        System.out.println("Quitting Program...");
                        break;
                }
            }while (selection != 9);
    
        }
    
        private void displayMenu() {
            System.out.println("");
            System.out.println("===================");
            System.out.println("Select an Option:");
            System.out.println("1) for Fahrenheit to Celsius");
            System.out.println("2) for Celsius to Fahrenheit");
            System.out.println("3) for lb to kg");
            System.out.println("4) for kg to lb");
            System.out.println("9) to quit");
            System.out.println("===================");
        }
    
        private double askForNextInput(Scanner keyboard, String unit){
            System.out.println("Enter how many " + unit + " you want to convert");
            double userInput = keyboard.nextDouble();
            return userInput;
        }
    
        private double FahrToCel(Scanner keyboard) {
            double Fahrenheit = askForNextInput(keyboard, "Farenheit");
            double Celsius = 5 * (Fahrenheit - FACTOR_FARENHEIT) / 9;
    
            System.out.println( "In Celcius, that's: " + Celsius);
            return Celsius;
        }
    
        private double CelToFahr(Scanner keyboard) {
            double Celsius = askForNextInput(keyboard, "Celsius");
            double Fahrenheit = (9 * Celsius / 5) + FACTOR_FARENHEIT;
            System.out.println( "In Fahrenheit, that's: " + Fahrenheit);
            return Fahrenheit;
    
        }
    
        private double LbToKilo(Scanner keyboard) {
            double pounds = askForNextInput(keyboard, "Pounds");
            double Kilogram = pounds * FACTOR;
    
            System.out.println( "In Kilograms, that's: " + Kilogram);
            return Kilogram;
    
        }
    
        private double KiloToLb(Scanner keyboard) {
            double kilograms = askForNextInput(keyboard, "Kilograms");
            double Pound = kilograms / FACTOR;
    
            System.out.println( "In Pounds, that's: " + Pound);
            return Pound;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-06-19
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      • 1970-01-01
      • 2020-01-19
      • 1970-01-01
      相关资源
      最近更新 更多