Java 字符串到整数的转换有问题
我做棋盘,国王将按照国际象棋规则独自行走。 下面是制作的方法,它调用了2次King的i和j坐标,我制作了输入变量字符串来检查King坐标是否已经存在。然后我试着把它转换成整数,这个转换好像有点问题Java 字符串到整数的转换有问题,java,Java,我做棋盘,国王将按照国际象棋规则独自行走。 下面是制作的方法,它调用了2次King的i和j坐标,我制作了输入变量字符串来检查King坐标是否已经存在。然后我试着把它转换成整数,这个转换好像有点问题 import java.util.*; public class King { int move(String iK){ Random rand = new Random(); Integer coordinateKing = Integer.valueOf(i
import java.util.*;
public class King {
int move(String iK){
Random rand = new Random();
Integer coordinateKing = Integer.valueOf(iK);
if (iK == null){
coordinateKing = rand.nextInt(8);
}else{
int caseI;
switch(caseI = rand.nextInt(2)){
case 0: if (coordinateKing < 8){ coordinateKing++; } else {caseI = rand.nextInt(2);}
break;
case 1: if (coordinateKing > 0){ coordinateKing--; } else {caseI = rand.nextInt(2);}
break;
default:
break;
}
}
return coordinateKing;
}
}
提前谢谢 这个例外是不言自明的。iK是空字符串,无法转换为整数。当iK为空时,您想要什么整数?这个异常是不言自明的。iK是空字符串,无法转换为整数。当iK为null时,您想要什么整数?您称之为
Integer coordinateKing = Integer.valueOf(iK);
但是iK
在那里可以为空。首先进行空值检查您称之为
Integer coordinateKing = Integer.valueOf(iK);
但是
iK
在那里可以为空。在检查是否为null
之前,首先执行null检查您正在尝试将iK
转换为整数。此行是引发异常的位置:
Integer coordinateKing = Integer.valueOf(iK);
但是,如果(iK==null)在随后的一行中,您将检查if(iK==null)
。您应该首先执行null
测试。您可以通过在if
语句之前声明coordinateKing
并在if…else
块中设置其值来解决此问题
Integer coordinateKing = 0;
if (iK == null){
coordinateKing = rand.nextInt(8);
} else {
coordinateKing = Integer.valueOf(iK);
int caseI;
...
}
您正在尝试将
iK
转换为整数,然后再检查它是否为null
。此行是引发异常的位置:
Integer coordinateKing = Integer.valueOf(iK);
但是,如果(iK==null)在随后的一行中,您将检查if(iK==null)
。您应该首先执行null
测试。您可以通过在if
语句之前声明coordinateKing
并在if…else
块中设置其值来解决此问题
Integer coordinateKing = 0;
if (iK == null){
coordinateKing = rand.nextInt(8);
} else {
coordinateKing = Integer.valueOf(iK);
int caseI;
...
}
这是一个运行时错误:在这里,iK接收空值,整数对象可以存储空值,但方法
valueOf()
在内部使用parseInt()
返回int值且null无法转换为int的方法这是一个运行时错误:此处iK接收到null值,整数对象可以存储null,但方法valueOf()内部使用parseInt()
返回int值且null不能转换为int的方法能否提供iK
的值?iK
为null
,因此无法解析它。您可能只想声明coordinateKing
并移动coordinateKing=Integer.valueOf(iK)是否可以提供iK
的值?iK
为null
,因此无法对其进行分析。您可能只想声明coordinateKing
并移动coordinateKing=Integer.valueOf(iK)代码>在else块中?