2017-06-07 12 views
-4

私はメソッドについて学習しており、単純な変換を行うメソッドのメニューを作成しようとしています。私はメニューからメソッドを呼び出す方法と関数を行う方法を知らない。私はメソッドを呼び出す方法を知りたいし、メインクラス以外のスキャナクラスを使用しないで入力を実行するようにしたいと思います。メソッドのメニューからメソッドを呼び出す方法は?

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が、その後何もあなたは、おそらくこのようなあなたのコードの何かを作りたいという

+0

(https://stackoverflow.com/tour)[StackOverflowのへようこそ]。 質問を改善するヒントについては、[質問]ページをご覧ください。大きな質問は、コミュニティからより迅速かつより良い回答を生み出す傾向があります。 – ochi

+0

@ochiこんにちは、申し訳ありませんが、私はそれらのユーザーの入力をしたいが、idkの方法を言及することを忘れてしまった。 – spider249

+0

"idk"?全体の言葉はより良いアプローチです。 –

答えて

1

@ JoshKopenは、変換したい値を提供していないと答えました。私の答えはほぼ同じです。ちょっと具体的で、intの代わりにdouble値を使って精度を上げています。

はこれを試してみてください:

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; 

} 
2

後に起こりません。あなたの問題は、変換する値を実際に提供していないことですが、これで修正されるはずです。私はまた、すべての変数名とメソッド名それは良いコーディング慣行であるように、下部ケースを作っ

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の練習で大文字になります。実用的なメリットはありませんが、もちろんコンベンションに従うことが常に望ましいです。

+0

system.out.print(結果);私には未解決のコンパイルの問題がありますか?変数が初期化されていません – spider249

0

私はちょうど行って、作られたメニューをビットパーディ:)

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; 
    } 
} 
関連する問題