1

This is my code for my android app which isn't complete

package com.example; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.RadioButton; import android.widget.Toast; public class MainActivity extends Activity { private EditText text; private EditText text2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = (EditText) findViewById(R.id.editText1); text2=(EditText)findViewById(R.id.result); } // This method is called at button click because we assigned the name to the // "OnClick property" of the button public void onClick(View view) { switch (view.getId()) { case R.id.button1: RadioButton celsiusButton = (RadioButton) findViewById(R.id.radio0); RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.radio1); RadioButton KelvinButton=(RadioButton) findViewById(R.id.radio2); if (text.getText().length() == 0) { Toast.makeText(this, "Please enter a valid number", Toast.LENGTH_LONG).show(); return; } float inputValue = Float.parseFloat(text.getText().toString()); if (celsiusButton.isChecked()) { text2.setText(String .valueOf(convertFahrenheitToCelsius(inputValue))); celsiusButton.setChecked(true); } else { text2.setText(String .valueOf(convertCelsiusToFahrenheit(inputValue))); fahrenheitButton.setChecked(false); celsiusButton.setChecked(true); if(KelvinButton.isChecked()) { text2.setText(String.valueOf(convertoKelvin(inputValue))); } } break; case R.id.button2: RadioButton celsiusButton = (RadioButton) findViewById(R.id.radio0); RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.radio1); RadioButton KelvinButton=(RadioButton) findViewById(R.id.radio2); float inputValue = Float.parseFloat(text.getText().toString()); if (text.getText().length() == 0) { Toast.makeText(this, "Please enter a valid number", Toast.LENGTH_LONG).show(); return; } if (fahrenheitButton.isChecked()) { text2.setText(String .valueOf(convertFahrenheitToCelsius(inputValue))); celsiusButton.setChecked(true); } else { text2.setText(String .valueOf(convertCelsiusToFahrenheit(inputValue))); fahrenheitButton.setChecked(true); if(KelvinButton.isChecked()) { text2.setText(String.valueOf(convertoKelvin(inputValue))); } } break; case R.id.button3: RadioButton celsiusButton = (RadioButton) findViewById(R.id.radio0); RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.radio1); RadioButton KelvinButton=(RadioButton) findViewById(R.id.radio2); float inputValue = Float.parseFloat(text.getText().toString()); if (text.getText().length() == 0) { Toast.makeText(this, "Please enter a valid number", Toast.LENGTH_LONG).show(); return; } if (KelvinButton.isChecked()) { text2.setText(String .valueOf(convertFahrenheitToCelsius(inputValue))); celsiusButton.setChecked(true); } else { text2.setText(String .valueOf(convertCelsiusToFahrenheit(inputValue))); fahrenheitButton.setChecked(false); celsiusButton.setChecked(true); if(KelvinButton.isChecked()) { text2.setText(String.valueOf(convertoKelvin(inputValue))); } } break; } } // Converts to celsius private float convertFahrenheitToCelsius(float fahrenheit) { return ((fahrenheit - 32) * 5 / 9); } // Converts to fahrenheit private float convertCelsiusToFahrenheit(float celsius) { return ((celsius * 9) / 5) + 32; } private float convertoKelvin(float celsius) { return ((celsius+273)) ; } } 

As you can see i have defined my variables each time in very case.If i don't do this i get the error "The value might not have been initialised.What am i doing wrong.

If you were wondering,My code isn't complete.I am suck at this error and will continue once this is fixed

2
  • On which line are you getting that error ? Commented Sep 24, 2012 at 4:55
  • at if (celsiusButton.isChecked()).It's not a compiler warning,it's an IDE warning Commented Sep 24, 2012 at 5:04

2 Answers 2

2

If I understood your question correctly If you assign values to celsiusButton, fahrenheitButton ,KelvinButtonvariables in only one case then you get error.

Reason why this happens is scope of the object initialization. Below is the sample which illustrates what is happening.

public void example() { String str; switch (1) { case 1: str = "test";// If I initalize here then there is problem since // scope is limited to only this case str.toString(); break; default: str.toString();// Compilation error here. break; } } public void example() { String str = "test"; switch (1) { case 1: str.toString(); break; default: str.toString();// No error because scope of initialisation is whole // method break; } } 

So you need to define your variables before switch (view.getId()) {

And resultant declaration will look like below

public void onClick(View view) { RadioButton celsiusButton = (RadioButton) findViewById(R.id.radio0); RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.radio1); RadioButton KelvinButton=(RadioButton) findViewById(R.id.radio2); switch (view.getId()) { case R.id.button1: 
Sign up to request clarification or add additional context in comments.

Comments

0

If I'm understanding you correctly, then IntelliJ is warning you about a variable that you're using that may not have been properly initialized. At a glance, if onCreate() isn't called before onClick(), then text and text2 would not be initialized. This could easily be a reason that IntelliJ is a confused.

1 Comment

Compilation error happens for local variables if they are not initialized. I don't think IntelliJ will violate that rule.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.