2015-03-03 74 views
0

我正在爲一個類編寫一個簡單的Android應用程序,並且正在執行轉換程序,該程序將英尺>英尺>碼>英里轉換。我有問題搞清楚爲什麼如果和其他聲明不會在一起。我正在粘貼Main.Java,所以如果我需要發佈主xml /字符串,請告訴我,但是所有內容都解析出來,直到我看到if或else語句時,才能看到我擁有的內容。它說它正在尋找(),但是當我添加它說它正在尋找布爾值時,我已經加倍了,但我解析了上面的文本,所以我認爲在解析後雙精度應該沒問題。我試圖讓這個儘可能清楚,但這是我編程邏輯之外的第一個編程類,所以我的術語可能不是很好。Android:調試if和else語句

package unitconversion.androidbootcamp.net.unitconversion; 
 

 
import android.support.v7.app.ActionBarActivity; 
 
import android.os.Bundle; 
 
import android.view.Menu; 
 
import android.view.MenuItem; 
 
import android.view.View; 
 
import android.widget.Button; 
 
import android.widget.EditText; 
 
import android.widget.Spinner; 
 
import android.widget.TextView; 
 

 
import java.text.DecimalFormat; 
 

 

 
public class MainActivity extends ActionBarActivity { 
 

 
    double inchesPerFoot = 12; 
 
    double feetPerYard = 3; 
 
    double yardsPerMile = 1760; 
 
    double txtNumberOfUnits; 
 
    double totalUnits; 
 
    double unitChoice; 
 

 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_main); 
 
     final EditText units =(EditText)findViewById(R.id.txtNumberOfUnits); 
 
     final Spinner Converstion = (Spinner)findViewById(R.id.Units_Array); 
 
     Button Submit = (Button)findViewById(R.id.btn_Submit); 
 
     Submit.setOnClickListener(new View.OnClickListener() { 
 
     final TextView result= ((TextView)findViewById(R.id.txt_Result)); 
 
      @Override 
 
      public void onClick(View v) { 
 
       txtNumberOfUnits = Integer.parseInt(units.getText().toString()); 
 
       DecimalFormat number = new DecimalFormat("###,###.##"); 
 
       if unitChoice = inchesPerFoot 
 
         totalUnits = inchesPerFoot/txtNumberOfUnits 
 
       else 
 
       if unitChoice = feetPerYard 
 
         totalUnits = feetPerYard/txtNumberOfUnits 
 
       else 
 
       if unitChoice = yardsPerMile; 
 
         totalUnits = yardsPerMile/txtNumberOfUnits; 
 
       unitChoice = units.getSelectedItem().tostring(); 
 
       result.setText("Total Units for" + unitChoice +" is "+ number.format(totalUnits)); 
 
      } 
 
     }); 
 

 
    } 
 

 

 
    @Override 
 
    public boolean onCreateOptionsMenu(Menu menu) { 
 
     // Inflate the menu; this adds items to the action bar if it is present. 
 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
 
     return true; 
 
    } 
 

 
    @Override 
 
    public boolean onOptionsItemSelected(MenuItem item) { 
 
     // Handle action bar item clicks here. The action bar will 
 
     // automatically handle clicks on the Home/Up button, so long 
 
     // as you specify a parent activity in AndroidManifest.xml. 
 
     int id = item.getItemId(); 
 

 
     //noinspection SimplifiableIfStatement 
 
     if (id == R.id.action_settings) { 
 
      return true; 
 
     } 
 

 
     return super.onOptionsItemSelected(item); 
 
    } 
 
}

回答

0

您的unitChoice是一個字符串。你是否想將選定的單元與文本進行比較?

unitChoice = units.getSelectedItem().tostring(); //<--- You make unitChoice String 
if (unitChoice.equals("inchesPerFoot")) 
    totalUnits = inchesPerFoot/txtNumberOfUnits 
else if (unitChoice.equals("feetPerYard")) 
    totalUnits = feetPerYard/txtNumberOfUnits 
else if (unitChoice.equals("yardsPerMile")) 
    totalUnits = yardsPerMile/txtNumberOfUnits; 

而且您還必須將此double unitChoice;設置爲字符串。並將成爲String unitChoice

+0

我認爲這實際上比預期的UnitChoice更可能是轉換。或者我看錯了。在微調器中,它給出英寸>英尺,英尺>碼和碼>英里的3種選擇。閱讀它有意義嗎? – 2015-03-03 01:59:25

+0

是的..你可以改變它爲unitChoice.equals(「英寸>英尺」),例如 – 2015-03-03 02:01:28

+0

修復它!謝謝。 – 2015-03-03 02:12:13

0

寫的,如果條件是這樣的:

if (unitChoice == feetPerYard) 

您需要的括號,但你還需要使用用於比較的==,單=是賦值操作。

0

你的問題就在這裏

if unitChoice = yardsPerMile; 

ü添加分號if條件,消除它會工作。

if (unitChoice == yardsPerMile) 
0

在有你的,如果else語句有幾個誤區:

if unitChoice == inchesPerFoot 
    totalUnits = inchesPerFoot/txtNumberOfUnits; 
else 
if unitChoice == feetPerYard 
    totalUnits = feetPerYard/txtNumberOfUnits; 
else 
if unitChoice == yardsPerMile 
    totalUnits = yardsPerMile/txtNumberOfUnits; 
  • 在if條件使用單一的 '=' 符號(使用雙 '==' 代替)
  • 使用分號在錯誤的地方。