Java で単位コンバーターを作成していますが、ループ後にプログラムを実行すると問題が発生します。静的変数、switch ステートメント、またはループに問題があるかどうかはわかりません。私は Java を初めて使用し、これが私の最初のプログラムです。私が抱えている主な問題は、2回目に実行し、変換するユニットのタイプを切り替えた後、次のようになることです:
"換算値を入力してください: 33
33 キログラム = 145.50525 ポンド
換算値を入力してください:"
しかし、私はこれをしたい:
"33 キログラム = 145.50525 ポンド
続行して別の変換を実行しますか? ('Y' または 'N')"
コードはこちら
import java.util.Scanner;
public class Unitconverter {
public static class displayer{
static int x,a,b,c,z1,z2,z3;
static Scanner mType = new Scanner(System.in);
static Scanner mDirect = new Scanner(System.in);
static Scanner mValue = new Scanner(System.in);
static Scanner YN = new Scanner(System.in);
static String YorN = "y";
public static void main(String args[]) {
mainMenu();
Type();
Direction();
Loop();
}
public static void mainMenu(){
System.out.println ("Unit Converter!");
System.out.println("");
System.out.println("What type of measurement would you like to convert?");
System.out.println("1. Convert length");
System.out.println("2. Convert weight");
System.out.println("3. Convert volume");
x = mType.nextInt();
}
public static void Type(){
switch(x){
case 1:
System.out.println ("1. Feet to Meters");
System.out.println ("2. Meters to Feet");
System.out.println ("Select conversion direction:");
a =mDirect.nextInt();
break;
case 2:
System.out.println ("1. Pounds to Kilograms");
System.out.println ("2. Kilograms to Pounds");
System.out.println ("Select conversion direction:");
b =mDirect.nextInt();
break;
case 3:
System.out.println ("1. Gallons to liters");
System.out.println ("2. Liters to gallons");
System.out.println ("Select conversion direction:");
c =mDirect.nextInt();
break;
}
}
public static void Direction(){
switch(a){
case 1: System.out.println("Enter Value for Conversion:");
z1 =mValue.nextInt();
System.out.println(z1 +" "+ "Feet =" +" "+ z1*0.3048 +" "+ "Meters");
break;
case 2:System.out.println("Enter Value for Conversion:");
z1 =mValue.nextInt();
System.out.println(z1 +" "+ "Meters =" +" "+ z1*3.28084 +" "+ "Feet");
break;
}
switch(b){
case 1: System.out.println("Enter Value for Conversion:");
z2 =mValue.nextInt();
System.out.println(z2 +" "+ "Pounds =" +" "+ z2*0.453592 +" "+ "Kilograms");
break;
case 2:System.out.println("Enter Value for Conversion:");
z2 =mValue.nextInt();
System.out.println(z2 +" "+ "Kilograms =" +" "+ z2*4.40925 +" "+ "Pounds");
break;
}
switch(c){
case 1: System.out.println("Enter Value for Conversion:");
z3 =mValue.nextInt();
System.out.println(z3 +" "+ "Gallons =" +" "+ z3*3.78541 +" "+ "Liters");
break;
case 2:System.out.println("Enter Value for Conversion:");
z3 =mValue.nextInt();
System.out.println(z3 +" "+ "Liters =" +" "+ z3*0.264172 +" "+ "Gallons");
break;
}
}
public static void Loop() {
while (YorN.equalsIgnoreCase("y")){
System.out.println("");
System.out.println ("do you want to continue and perform another conversion? ('Y' or 'N')");
YorN = YN.nextLine();
main(null);
}
}
}
}