2016-10-02 8 views
-3

Я пытаюсь использовать формулу расстояния. Когда я пытаюсь запустить программу, я могу ввести значения для x1, y1, x2, но результат не появляется, когда я пытаюсь найти расстояние. Какие-либо предложения?Формула расстояния с операторами if

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

EditText editText, editText2, editText3, editText4; 
Button button; 

TextView tv_result; 

double a,b,c,d, e, x1,x2,y1,y2; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    editText = (EditText) findViewById(R.id.editText); 
    editText2 = (EditText) findViewById(R.id.editText2); 
    editText3 = (EditText) findViewById(R.id.editText3); 
    editText4 = (EditText) findViewById(R.id.editText4); 

    button = (Button) findViewById(R.id.button); 

    //tv_result = (TextView) findViewById(R.id.tv_result); 

    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(!editText.getText().toString().equals("") && !editText2.getText().toString().equals("") 
       && !editText3.getText().toString().equals("") && !editText4.getText().toString().equals("")){ 

       x1 = Double.parseDouble(editText.getText().toString()); 
       x2 = Double.parseDouble(editText.getText().toString()); 
       y1 = Double.parseDouble(editText.getText().toString()); 
       y2 = Double.parseDouble(editText.getText().toString()); 

       e = Math.sqrt(Math.pow(x2-x1,2)+ Math.pow(y2-y1,2)); 

       // if (e == 0) { 
        // tv_result.setText("The two points are the same"); 
        if (e > 0){ 
        tv_result.setText("e"); 


       } 






      } 


     } 
    }); 
} 

}

+0

'// tv_result = (TextView) findViewById (R.id.tv_result);' - эта линия действительно закомментирована? Это будет означать «NullPointerException». Кроме того, измените 'tv_result.setText (" e ");' на 'tv_result.setText (Double.toString (e));' – Eran

+0

Я думаю, вам нужно перефразировать вопрос, поскольку отсутствует ясность @Akshay –

ответ

-1
К.П

Изменить/UN ЭТА ЛИНИЯ

tv_result = (TextView) findViewById(R.id.tv_result); 

Вы бы получить сообщение об ошибке при попытке связать данные на NULL Объект! Приветствия!

+0

Вы пропустили актуальную проблему Вот! –

2

В основном разветвленный код. Сделали некоторые изменения, хотя.

Изменения

  1. Раскоментируйте tv_result = (TextView) findViewById(R.id.tv_result);, как @ibtehaz указал, как это привело бы к NPE в tv_result.setText("e");.

  2. В этой строке tv_result.setText("e"); вы указываете символ «e» на TextView, а не на результат. Вы должны делать tv_result.setText(e);.

Смотреть полный код ниже,

public class MainActivity extends AppCompatActivity { 

    EditText editText, editText2, editText3, editText4; 
    Button button; 

    TextView tv_result; 

    double a,b,c,d, e, x1,x2,y1,y2; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     editText = (EditText) findViewById(R.id.editText); 
     editText2 = (EditText) findViewById(R.id.editText2); 
     editText3 = (EditText) findViewById(R.id.editText3); 
     editText4 = (EditText) findViewById(R.id.editText4); 

     button = (Button) findViewById(R.id.button); 

     tv_result = (TextView) findViewById(R.id.tv_result); 

     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if(!editText.getText().toString().equals("") 
        && !editText2.getText().toString().equals("") 
        && !editText3.getText().toString().equals("") 
        && !editText4.getText().toString().equals("")){ 

         x1 = Double.parseDouble(editText.getText().toString()); 
         x2 = Double.parseDouble(editText.getText().toString()); 
         y1 = Double.parseDouble(editText.getText().toString()); 
         y2 = Double.parseDouble(editText.getText().toString()); 

         e = Math.sqrt(Math.pow(x2-x1,2)+ Math.pow(y2-y1,2)); 

         if (e == 0) { 
          tv_result.setText("The two points are the same"); 
         } else if (e > 0){ 
          tv_result.setText(String.valueOf(e)); 
         } 
       } 
      } 
     }); 
    } 
} 
+0

hahahah. В основном изменилась одна строка: p –

+0

Я предполагаю, что если ответ прокомментировал строку, он попробовал ее, когда был раскован. – Divers

+0

Намного проще на самом деле. Изменилось 3 строки. :) –

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

  • Нет связанных вопросов^_^