2012-03-31 4 views
0
package GC; 

import java.util.Scanner; 

public class main { 
public static void main(String args[]) { 
    Scanner input = new Scanner(System.in); 
    System.out.println("Calculate exam grade needed(e) or final grade received(f)?"); 
    String x = input.nextLine(); 
    if (x == "e"){ 
     double q1, q2, f, e; 
     Scanner inputa = new Scanner(System.in); 
     Scanner inputb = new Scanner(System.in); 
     Scanner inputc = new Scanner(System.in); 

     System.out.print("Quarter 1: "); 
     q1 = inputa.nextInt(); 
     System.out.print("Quarter 2: "); 
     q2 = inputb.nextInt(); 
     System.out.print("Final grade wanted: "); 
     f = inputc.nextInt(); 

     e = 5*(f-0.4*(q1)-0.4*(q2)); 
     if(e == (int)e){ 
      System.out.println((int)e); 
     } 
     else{ 
      e = 0.01*((int)(e*100)); 
      System.out.println(e); 
     } 
    } 


    else if (x == "f"){ 

    } 
    else{ 
     System.out.println("ERROR"); 
    } 



} 
} 

最初にeを入力しても、必ずelse文に進みます。私はユーザー入力または私のifパラメータからStringを得ることに何か問題があったかもしれません。私は何が欠けていますか?私のコードはいつもelseステートメントに行きますか?

+2

( "E" .equals(X)){... – Osw

+0

が読んしようとした場合http://stackoverflow.com/questions/703396/how-to-nicely-format-floating-types-to-文字列とhttp://docs.oracle.com/javase/6/docs/api/java/lang/Math.html – ShinTakezou

答えて

1

"equals"比較メソッドを使用する必要があります。 Xは文字列であり、値を比較するための "=="のオーバーロード演算子はありません。

わからない場合は、常にオブジェクトのjavadocsを見てください。

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html

if(x.equals("e")){ 

} 
+0

これで私はこれを編集できません。あなたはかっこがありません。 –

0

eは2倍で、intにキャストするといくつかのビットが失われます。

+0

* Facepalm *ありがとう! – Wilson

+0

意味がない場合、eは内部からの変数です – Diego

+1

いいえ、あなたが参照している文: 'if(e ==(int)e){'はこのコードでは到達不可能です。 – amit

3
if (x == "e"){ 

あなたはequals()なくoperator==Stringオブジェクトを比較すべきです。また、Stringの等価性をチェックするequalsIgnoreCase()にも注意する必要があります。一方、各文字は無視されます。時には役に立つかもしれません。 同一ため

operator==チェック - equals()等価をチェックしながら2つのオブジェクトが、[変数が同じオブジェクトを参照]実際には同じオブジェクトである場合 - その内容が同じである場合。

String x = input.nextLine().toString().trim() 

または:

if ("e".equals(x)) { 

else if (x == "f"){

+0

Java VMにエラーがある場合。一般的には、これは定数に対してメソッドを実行するための適切な規則です。 –

+0

@Legend:JVMにエラーがある場合は、何も予測できません。あなたの編集を承認しました。なぜならそれはより良い習慣かもしれないからですが、間違いではありません。 – amit

0

試み(多分あなたは空白を取得しているために同じことを行うに

変更

if (x == "e"){ 
x.equals("e") 
関連する問題