2014-01-09 56 views
0
final EditText d1n = (EditText) findViewById(R.id.d1n); 

AA來自edittext。方法中的字符串參數不起作用

NotHesapla(d1n.getText().toString()); 

返回-1。如果我嘗試

NotHesapla("AA"); 

工作成功。

public double NotHesapla(String not) { 
    double puan; 
    if (not == "AA") { puan = 4; } 
    else if (not == "BA") { puan = 3.5; } 
    else if (not == "BB") { puan = 3; } 
    else if (not == "CB") { puan = 2.5; } 
    else if (not == "CC") { puan = 2; } 
    else if (not == "DC") { puan = 1.5; } 
    else if (not == "DD") { puan = 1; } 
    else if (not == "FD") { puan = 0.5; } 
    else if (not == "FF") { puan = 0; } 
    else { puan = -1; } 
    return puan; 
} 

我該如何解決這個問題? 謝謝

+8

Noooooooooooooooooooooooooooooooooooooooooooooooo,不使用'比較兩個字符串值=='!!!!!!!!!!!!!!!使用'equals()'。 – user2336315

+0

當使用==與String時,您正在比較引用。不是實際的文字。使用等於() – Nfear

回答

4

比較字符串,你需要使用equals()

if(not.equals("BA"))... 

或以上(以避免NPE):

if("BA".equals(not))... 
+0

是的這是工作。謝謝。第一次與這個問題。在這之後我不會忘記:) –

1

您應該使用equals方法,而不是== opertaor。

if (not.equals("AA")) { puan = 4; } 

需要注意的是:

== tests for reference equality. 

.equals() tests for value equality. 

請參閱here以獲取更多信息。

1

對於字符串總是使用equals方法!

public double NotHesapla(String not) { 
double puan; 
if ("AA".equals(not)) { puan = 4; } 
else if ("BA".equals(not)) { puan = 3.5; } 
else if ("BB".equals(not)) { puan = 3; } 
else if ("CB".equals(not)) { puan = 2.5; } 
else if ("CC".equals(not)) { puan = 2; } 
else if ("DC".equals(not)) { puan = 1.5; } 
else if ("DD".equals(not)) { puan = 1; } 
else if ("FD".equals(not)) { puan = 0.5; } 
else if ("FF") { puan = 0; } 
else { puan = -1; } 
return puan;} 
相關問題