本菜鸟今天写了一段代码,几经修改后发现还是有问题,如下:import java.util.*;public class TemperatureTransform{ public static void main(String[] args){
Scanner keyboard=new Scanner(System.in); System.out.println("Please enter a temperature in a correct form:"); String request=null; int degrees; String temperatureInput=keyboard.nextLine(); int lengthOfInput=temperatureInput.length(); String typeOfTemperature=temperatureInput.substring(lengthOfInput-1); String figuresOfTemperature=temperatureInput.substring(0,lengthOfInput-1); int degreesToCalculate=Integer.parseInt(figuresOfTemperature); while(!(request.equalsIgnoreCase("Q"))){
if(typeOfTemperature.equalsIgnoreCase("C")){
degrees=(9*(degreesToCalculate)/5)+32;
}else if(typeOfTemperature.equalsIgnoreCase("F")){
degrees=5*(degreesToCalculate-32)/9;
}else{
System.out.println("Error!You must input a temperature in correct form with 'C'\\'c'\\'F'\\'f' behind:"); temperatureInput=keyboard.nextLine(); lengthOfInput=temperatureInput.length(); typeOfTemperature=temperatureInput.substring(lengthOfInput-1); figuresOfTemperature=temperatureInput.substring(0,lengthOfInput-1); degreesToCalculate=Integer.parseInt(figuresOfTemperature); if(typeOfTemperature.equalsIgnoreCase("C")){
degrees=(9*(degreesToCalculate)/5)+32;
}else if(typeOfTemperature.equalsIgnoreCase("F")){
degrees=5*(degreesToCalculate-32)/9;
} } System.out.println("If you want to quit the calculation,please enter 'Q' or 'q', and if you want to continue,enter any button as you like:"); request=keyboard.nextLine();
}//while loop ends here.
}//main method ends here.}//class ends here.在命令提示符里面,当询问:"Please enter a temperature in a correct form:"的时候会立刻报错,错误显示如下:Exception in thread "main" java.lang.NullPointerException
at TemperagtureTransform.main(TemperatureTransform.java:25)请教各位高手,这是什么错误?怎么会出现这种错误?
Scanner keyboard=new Scanner(System.in); System.out.println("Please enter a temperature in a correct form:"); String request=null; int degrees; String temperatureInput=keyboard.nextLine(); int lengthOfInput=temperatureInput.length(); String typeOfTemperature=temperatureInput.substring(lengthOfInput-1); String figuresOfTemperature=temperatureInput.substring(0,lengthOfInput-1); int degreesToCalculate=Integer.parseInt(figuresOfTemperature); while(!(request.equalsIgnoreCase("Q"))){
if(typeOfTemperature.equalsIgnoreCase("C")){
degrees=(9*(degreesToCalculate)/5)+32;
}else if(typeOfTemperature.equalsIgnoreCase("F")){
degrees=5*(degreesToCalculate-32)/9;
}else{
System.out.println("Error!You must input a temperature in correct form with 'C'\\'c'\\'F'\\'f' behind:"); temperatureInput=keyboard.nextLine(); lengthOfInput=temperatureInput.length(); typeOfTemperature=temperatureInput.substring(lengthOfInput-1); figuresOfTemperature=temperatureInput.substring(0,lengthOfInput-1); degreesToCalculate=Integer.parseInt(figuresOfTemperature); if(typeOfTemperature.equalsIgnoreCase("C")){
degrees=(9*(degreesToCalculate)/5)+32;
}else if(typeOfTemperature.equalsIgnoreCase("F")){
degrees=5*(degreesToCalculate-32)/9;
} } System.out.println("If you want to quit the calculation,please enter 'Q' or 'q', and if you want to continue,enter any button as you like:"); request=keyboard.nextLine();
}//while loop ends here.
}//main method ends here.}//class ends here.在命令提示符里面,当询问:"Please enter a temperature in a correct form:"的时候会立刻报错,错误显示如下:Exception in thread "main" java.lang.NullPointerException
at TemperagtureTransform.main(TemperatureTransform.java:25)请教各位高手,这是什么错误?怎么会出现这种错误?
空指针异常
但是我运行了,在输出“please .....:"后没有任何错误哦。
你先定义了String request=null;
然后有这样的判断: while(!(request.equalsIgnoreCase("Q"))){
在上面两句语句之间,你没有给request进行操作,也就说说request是个空指针。这也是报错的地方。
当程序执行到
while(!(request.equalsIgnoreCase("Q"))){
就会报
java.lang.NullPointerException
while (!(request.equalsIgnoreCase("Q"))) //request在刚开始的时候被设为null,所以执行到这里时会出错,可以把request = null;改为request = "";
你先定义了String request=null;
然后有这样的判断: while(!(request.equalsIgnoreCase("Q"))){
在上面两句语句之间,你没有给request进行操作,也就说说request是个空指针。这也是报错的地方。