Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Razor 如何从方法菜单中调用方法?_Razor - Fatal编程技术网

Razor 如何从方法菜单中调用方法?

Razor 如何从方法菜单中调用方法?,razor,Razor,我正在学习方法,并尝试制作一个简单转换的方法菜单。我不知道如何从菜单中调用一个方法并使其执行该功能。我想知道如何调用一个方法,并使其在输入中运行,而不是使用scanner类,main除外 public static void main(String[] args) { displayMenu(); Scanner keyboard = new Scanner(System.in); int selection = keyboard.nextInt(); switc

我正在学习方法,并尝试制作一个简单转换的方法菜单。我不知道如何从菜单中调用一个方法并使其执行该功能。我想知道如何调用一个方法,并使其在输入中运行,而不是使用scanner类,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;

}
是我想要获得用户输入的变量,但是idk如何做到这一点,而不用在每个方法中制作新的扫描仪

idk如何获取方法中的输入


当我运行代码时,我会得到displayMenu选项,我可以输入1,2,3,4,但之后什么都不会发生。你可能想让代码变成这样。您的问题是您实际上没有提供任何要转换的值,但这应该可以解决它

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实践中,通常只有类名大写。没有实际的好处,但当然遵循惯例总是更好。

正如@JoshKopen所说,您没有提供要转换的值,我的答案基本相同,只是更具体一点,使用双精度值而不是整数来获得更高的精度

试试这个:

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;

}

我只是去把菜单弄得有点乱:)


. 请阅读我们的页面,了解如何改进您的问题。伟大的问题往往会从社区中产生更快、更好的答案。@ochi嗨,对不起,我忘了提到我想让那些用户输入,但idk如何。“idk”?完整的文字是一个更好的方法。我只是添加了一个答案。。。它可能有助于系统输出打印(结果);给我一个未解决的编译问题?表示变量尚未初始化
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;
    }
}