我正在编写一个简单的 Java 程序来进行温度转换,但我在第 8 行(我在下面的代码中已标记)不断收到错误,提示无法取消引用 int。我不确定这到底是什么意思,或者如何解决它,这里有相同错误的其他问题无助于为我的错误找到解决方案。问题是:具有以下格式: ?<int><int><int><int>我要解决?在这种情况下,但考虑到第二个向量乘以 3,第三个向量乘以 1,第四个向量乘以 0,最后一个向量被减去。class LeaderBoard{ public static void main(String[] args){ String errorFormat = "Format error: You must write 4 integers and one symbol ?"; int[] list = null; int position = -1, j = 0; if(args.length!=5){ System.err.println(errorFormat); }else{ try { list = new int[4]; for(int i=0;i<args.length;i++){ if(position== -1 && args[i].equals("?")){ position = i; }else if((position!= -1 && args[i].equals("?")) || (j==4)){ //Hay mas de un ? o no hay ? System.err.println(errorFormat); System.exit(1); }else{ list[j] = Integer.parseInt(args[i]); j++; } } } catch (NumberFormatException e) { System.err.println(errorFormat); System.exit(1); } System.out.println("The missing value is "+calculate(position,list)); } }static int calculate(int position, int[] list){ position=0; for (int i=0; i<list.length; i++){ if(list[1]==0){position=list[1]*3+list[2]*1+list[3]*0+list[4]*(-1); } } return 0; }}当我执行程序时,结果总是得到值 0,虽然我更改了输入值。有人可以帮助我吗?
2 回答
慕虎7371278
TA贡献1802条经验 获得超4个赞
list[1]
是原始类型。你不能在它上面调用方法。因此,当您尝试调用equal
(您是说equals()
吗?)时,您会收到错误消息。
除此之外,你的逻辑没有意义。您正在尝试将 anint
与 aString
进行比较,然后将布尔结果与另一个进行比较int
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
在您的calculate函数中,您正在传递,position但您甚至没有使用它并分配0给它。
当 i=1 时,for 循环也会抛出异常,因为您的代码将尝试访问不存在的 list[i+4]=list[5] ,因此将获取ArrayIndexOutOfBound Exception.
由于您的数组仅包含 int 类型,因此您无需担心?as 的位置?不是 int 类型,您可以使用以下代码:
static int calculate(int[] list){
int position=0;
int calculatedValue = list[position]*3+list[position+1]*1+list[position+2]*0+list[position+3]*(-1);
return calculatedValue ;
}
添加回答
举报
0/150
提交
取消