Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串到整数的转换有问题_Java - Fatal编程技术网

Java 字符串到整数的转换有问题

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

我做棋盘,国王将按照国际象棋规则独自行走。 下面是制作的方法,它调用了2次King的i和j坐标,我制作了输入变量字符串来检查King坐标是否已经存在。然后我试着把它转换成整数,这个转换好像有点问题

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块中?