0

私は遊んで、学んだことのいくつかをテストしてきましたが、これは何らかの理由でうまくいきません。まだ途中ですが、完成までに何千もの問題が山積みにならないように、開発中に実行し続けています。そのままでも走れるはずです。

import java.util.Scanner;

public class Speed {
    public void speedAsker(){
        Scanner scan = new Scanner(System.in);

        System.out.println("Should we use: 1.KMPH or 2. MPH");
        int s1 = scan.nextInt();
        if(s1==1){
            String j1 = "KMPH";
            System.out.println("We will be using Kilometres for this calculation.");
        }if(s1 ==2){
            String j1 = "MPH";
            System.out.println("We will be using Miles for this calculation.");
        }else{
            System.out.println("That is an invalid input, you must choose between 1 or 2.");
        }
        System.out.println("What speed is your vehicle going in?");
        int d1 = scan.nextInt();
        System.out.println("Your vehicle was going at " + d1 + j1 + ".");
    }
}

これは私が出力用に得たものです。ランチャー クラスは文字通りこのクラスを起動しているだけです。私は良い練習のためにそれを行っているだけです。私が抱えている問題は、回答に基づいて j1 にラベルを付け、後で出力に使用しようとすることです。

スレッド「メイン」の例外 java.lang.Error: 未解決のコンパイルの問題: j1 は 、Launcher.main(Launcher.java:7) の Speed.speedAsker(Speed.java:28)で
変数に解決できません


前もって感謝します。

4

2 に答える 2

7

外部で宣言し、if/else 内で定義します。

String j1;
if(s1==1){
    j1 = "KMPH";
    System.out.println("We will be using Kilometres for this calculation.");
}if(s1 ==2){
    j1 = "MPH";
    System.out.println("We will be using Miles for this calculation.");
}else{
    j1 = null;
    System.out.println("That is an invalid input, you must choose between 1 or 2.");
}
于 2013-05-28T20:13:23.997 に答える
5

for ループの外側で文字列を宣言し、内側に割り当てます。

例えば:

String j1;

if(s1==1){
    j1 = "KMPH";
    System.out.println("We will be using Kilometres for this calculation.");
}if(s1 ==2){
    j1 = "MPH";
    System.out.println("We will be using Miles for this calculation.");
}else{
    j1 = "";
    System.out.println("That is an invalid input, you must choose between 1 or 2.");
}

...

System.out.println("Your vehicle was going at " + d1 + j1 + ".");

Java では、ローカル変数を使用する前に明確な割り当てが必要であることに注意してください。上記の宣言「String j1」はデフォルト値を提供しないため、else 句はデフォルト値を提供するか、異常終了する必要があります。

宣言でデフォルト値を指定することもできます。

 String j1 = "";
于 2013-05-28T20:13:01.030 に答える