2017-03-26 14 views
-8

私は自分のコードを実行している魔女は、シーケンスの最初の1つですし、シーケンスの2番目のサンプルコードを実行しています。シーケンスの2番目のものは実行されますが、最初のものは実行されません。私は間違って何をしていますか?私はコードを精査して、重要な違いは見えません。コードはこここれら2つのJavaコードの違いは何ですか?

:Javaはキーワード「VAR」を持っていない

public int diff21(int n) { 
    var diff = Math.abs(n - 21); 
    if (n > 21) { 
    return diff*2; 
    } else { 
    return diff; 
    } 
} 
public int diff21(int n) { 
    if (n <= 21) { 
    return 21 - n; 
    } else { 
    return (n - 21) * 2; 
    } 
} 
+0

違いは何だと思いますか?宿題のようにひどく見えます...そして、 'var'はintでなければなりません。 –

+3

Javaで 'var'はどうなると思いますか? Java * Script *と同じではないことは分かっていますか? – jonrsharpe

+0

コードを書く前に基本的なチュートリアルを読む必要があるようです。 – Kayaman

答えて

1

、あなたが必要とするバットをコーディングすると、エラーが「2:クラスVARラインシンボル シンボルを見つけることができない」であることを私に伝えます変数を明示的に宣言します。

あなたのケースでは、あなたは「int型

0

var diffする差分を宣言する必要はあなたがタイプvardiffという変数を宣言していることを意味します。タイプvarとは何ですか?コンパイラは、したがってエラーを知らない。

+0

ありがとうございます。私はこれを試しましたが、あなたが知っているコードに戻しました。なぜなら、オプションがなくなっているからです。クラスをintに変更すると、別のエラーコード、「欠落した '}」または不正な式の開始が表示されます。私が何をしていても、このエラーが出ることはありません。実行されるコードと実行されないコードの違いはわかりません。 – Trea704

0

vardoubleに変更するのは、varがJavaプリミティブデータ型ではないためです。 intを使用することもできますが、キャストするにはMath.absと入力する必要があります。 varのコードは、コードを実行するとコンパイルされません。

テストする場合は、次のようにいくつかの変更を加えます。

public class Test { 
public static void main(String[]args){ 
    System.out.println(diff21(10) +" "+ diff22(15)); 
} 
public static int diff21(int n) { 
    int diff = Math.abs(n - 21); 
    if (n > 21) { 
     return diff*2; 
    } else { 
     return diff; 
    } 
} 
public static int diff22(int n) { 
    if (n <= 21) { 
     return 21 - n; 
    } else { 
     return (n - 21) * 2; 
    } 
    } 
} 
関連する問題