2015-03-03 4 views
-3

Когда я запускаю свою программу, мой ответ всегда равен 0, когда я делаю разделение ниже? Я прочитал одну статью о стеке, но он казался намного более сложным и включал несколько переменных, и я не мог понять, где это было. Если кто-то может оказать какую-либо помощь в том, что не так с моей математикой в ​​моих заявлениях if и else, я был бы очень признателен. Извините, я новичок, и это мой первый язык: /.Android: Отдел всегда 0

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 { 

    int inchesPerFoot = 12; 
    int feetPerYard = 3; 
    int yardsPerMile = 1760; 
    double unitsRequested; 
    double totalUnits; 
    String 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 Conversion = (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) { 
       unitsRequested = Integer.parseInt(units.getText().toString()); 
       DecimalFormat number = new DecimalFormat("###,###.##"); 
       if (Conversion.equals(inchesPerFoot)) 
         totalUnits = (inchesPerFoot/unitsRequested); 
       else 
       if (Conversion.equals(feetPerYard)) 
         totalUnits = (feetPerYard/unitsRequested); 
       else 
       if (Conversion.equals(yardsPerMile)) 
         totalUnits = (yardsPerMile/unitsRequested); 
       unitChoice = Conversion.getSelectedItem().toString(); 
       result.setText("Total Units for " + unitChoice +" is "+ number.format(totalUnits)); 
      } 
     }); 

    } 

ответ

0

Вы сравниваете Spinner объект с некоторыми int значениями, например:

if (Conversion.equals(inchesPerFoot)) 

Это бессмысленное сравнение, и никогда не будет правдой, так что ни один из ваших условий не встречал для расчета totalUnits и поэтому ваш ответ равен нулю.

Conversion имеет тип Spinner и inchesPerFoot - int. Вы должны либо получить индекс позиции кока и сравниваться, что, как это:

int spinnerIndex = Conversion.getSelectedItemPosition(); 
if (spinnerIndex == 0) 
    totalUnits = (inchesPerFoot/unitsRequested); 
else 
if (spinnerIndex == 1) 
    totalUnits = (feetPerYard/unitsRequested); 
else 
if (spinnerIndex == 2) 
    totalUnits = (yardsPerMile/unitsRequested); 

(при условии, что ваши детали обтекателя втулки в таком порядке), либо получить выбранное содержимое записи счетчика (при условии, что это строка, содержащей целое число) и использовать это:

int spinnerValue = Integer.parseInt(Conversion.getSelectedItem().toString()); 

в качестве альтернативы вы можете получить содержимое кок элемент как String и сделать String сравнения против различных типов преобразования:

String spinnerValue = Conversion.getSelectedItem().toString(); 
+0

Вы были написать здесь окончательное решение, которое я использовал, чтобы заставить его работать. –

0

Вы были прямо здесь, это окончательное решение, которое я использовал, чтобы заставить его работать.

общественного класса MainActivity расширяет ActionBarActivity {

final double inchesPerFoot = 12; 
final double feetPerYard = 3; 
final double yardsPerMile = 1760; 
double unitsRequested; 
double totalUnits; 
String 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 Conversion = (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) { 
      unitsRequested = Integer.parseInt(units.getText().toString()); 
      DecimalFormat number = new DecimalFormat("###,###.##"); 
      unitChoice = Conversion.getSelectedItem().toString(); 

      if (unitChoice.equals("Inches to Feet")) 
       totalUnits = (unitsRequested/inchesPerFoot); 
      else 
      if (unitChoice.equals("Feet to Yards")) 
        totalUnits = (unitsRequested/feetPerYard); 
      else 
      if (unitChoice.equals("Yards to Miles")) 
        totalUnits = (unitsRequested/yardsPerMile); 

      result.setText("Total Units for " + unitChoice +" is "+ number.format(totalUnits)); 
     } 
    }); 

} 
Смежные вопросы