2016-04-16 11 views
-3

私は次のことを試みました。 if(pos == "mgt"){} しかし、機能しませんでした。それが 'else'を実行するたびに。 問題は何ですか? 名前をスキャンするときに問題が発生しました。 scan.next();私はフルネームを入力するとエラーが発生し、1つの名前だけが正常に機能しました。if条件で文字列を使用するには?

ここに完全なコードがあります。

static double bsal,nsal,epf,etf,pet; 
    static String name,pos; 
    static int empId; 
public static void main(String []args){ 
    Scanner scan = new Scanner(System.in); 
    System.out.print("Enter your Employee ID :"); 
    empId = scan.nextInt(); 
    System.out.println(); 

    System.out.print("Enter your name :"); 
    name = scan.next();`` 
    System.out.println(); 
    System.out.print("Enter your position :"); 
    pos = scan.next(); 
    System.out.println(); 
    System.out.print("Enter your Basic Salary :"); 
    bsal = scan.nextDouble(); 
    epf(); 
    etf(); 
    pet(); 
    nsal(); 
    result(); 
} 
static double epf(){ 
    epf = x*8/100; 
    return epf; 
} 
static double etf(){ 
    etf = bsal*3/100; 
    return etf; 
} 


static double pet(){ 
     if(pos =="mgt"){ 
      pet = bsal*10/100; 
     } 
     else if(pos == "exe"){ 
      pet = bsal*7/100; 
     } 
     else if(pos == "ope"){ 
      pet = bsal*5/100; 
     } 
     else{ 
      System.out.println("Problem with Position. Enter it correctly."); 
     } 
     return pet; 
} 
static double nsal(){ 
    nsal = bsal + pet - (etf + epf); 
    return nsal; 
} 
static void result(){ 
// output of every thing 
    } 
} 
+0

'=='や '!='を使って文字列を比較しないでください。代わりに 'equals(...)'または 'equalsIgnoreCase(...)'メソッドを使用してください。 2つの*オブジェクト参照が同じであるかどうかを '=='が調べることを理解する。興味のあるものではない。もう一方のメソッドは、2つの文字列が同じ順序で同じ文字を持つかどうかをチェックする。ここに問題があります。 –

答えて

0

代わりに文字列を比較するときにpos.equals("mgt")を使用してください。

また、文字列を入力するときはscan.nextLine()を使用してください。

+0

"mgt" .equals(pos) – Abdelhak

+0

うん、確かに同意して使用する方がはるかに良いです!もっと安全です! –

+0

なぜより安全ですか? –

関連する問題