Reputation: 5755
import java.io.*;
public class tempdetection {
public static int celciustofarenheit(int temp){
int fTemp = ((9 * temp)/5) + 32;
return fTemp;
}
public static void examineTemperature(int temp){
System.out.println("\nTemperature is " + temp + " in celcius. Hmmm...");
int fTemp = celciustofarenheit(temp);
System.out.println("\nThats " + fTemp + " in Farenheit...");
if(fTemp<20)
System.out.println("\n***Burrrr. Its cold...***\n\n");
else if(fTemp>20 || fTemp<50)
System.out.println("\n***The weather is niether too hot nor too cold***\n\n");
else if(fTemp>50)
System.out.println("\n***Holy cow.. Its scorching.. Too hot***\n\n");
}
public static void main(String[] args) throws IOException {
int temperature;
char c;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
do{
System.out.println("Input:\n(Consider the input is from the sensor)\n");
temperature = Integer.parseInt(br.readLine());
examineTemperature(temperature);
System.out.println("Does the sensor wanna continue giving input?:(y/n)\n");
c = (char) br.read();
}while(c!= 'N' && c!='n'); //if c==N that is no then stop
}
}
This is the complete code guys.. I still din get my answer.. I've searched a lot on net but to no avail.. Also thanks for who've already helped but that din resolve my problem.. Temperature is int.. SO why i should convert to string.?? Also i tried try catch as specified by one of the member but then examineTemperature(temperature) throws n error saying its not initialized..
Input:
(Consider the input is from the sensor)
45
Temperature is 45 in celcius. Hmmm...
Thats 113 in Farenheit...
***The weather is niether too hot nor too cold***
Does the sensor wanna continue giving input?:(y/n)
N
Input:
(Consider the input is from the sensor)
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at tempdetection.main(tempdetection.java:33)
Also it works fyn until it reaches while loop..
Upvotes: 0
Views: 7246
Reputation: 29
If you have seen Number format exception like this:
java.lang.NumberFormatException: For input string: ""
java.lang.Integer.parseInt(Integer.java:627)
com.tejveer.hiandroiddevelopers.MainActivity.onCreate(MainActivity.java:24)
android.app.Activity.performCreate(Activity.java:7802)
this type of error is created then application will be crashed.
then resolved this problem by writing the separate method
like this
public void thisIsMethod(View textView){
EditText edtFn = findViewById(R.id.efn);
EditText edtSN = findViewById(R.id.esn);
int mResult = Integer.parseInt(edtFn.getText().toString())*
Integer.parseInt(edtSN.getText().toString());
}
This method write outside this block
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); }
Upvotes: 0
Reputation: 10959
The error in the line
temperature = Integer.parseInt(br.readLine());
This is reading in the input and trying to parse it as an Integer. As the exception suggests the input is not a number i.e. NumberFormatException
as Integer.parseInt()
expects the argument to be a number.
There are multiple ways to fix this:
One way (I personally believe not the best) is to catch the exception and just do nothing and continue
try
{
temperature = Integer.parseInt(br.readLine());
// and do any code that uses temperature
//if you don't then temperature will not be assigned
}
catch (NumberFormatException nfex)
{}
A better way would be to check the input string is a number before trying to parse
String input = br.readLine();
if(input.matches("\\d+")) // Only ints so don't actually need to consider decimals
//is a number... do relevant code
temperature = Integer.parseInt(input);
else
//not a number
System.out.println("Not a number that was input");
Upvotes: 1
Reputation: 1279
You can't parse a string that can't convert to a integer number.
Integer.parseInt(String s) throw this exception;
Upvotes: 0
Reputation: 14791
In your do/while loop's condition, the ||
should be an &&
:
do{
System.out.println("Input:\n(Consider the input is from the sensor)\n");
temperature = Integer.parseInt(br.readLine());
examineTemperature(temperature);
System.out.println("Does the sensor wanna continue giving input?:(y/n)\n");
c = (char) br.read();
} while (c != 'N' && c != 'n');
Upvotes: 4