【问题标题】:error: int cannot be dereferenced java (repeat)错误:int 无法取消引用 java(重复)
【发布时间】:2019-03-09 00:17:02
【问题描述】:

我正在编写一个简单的 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,但我改变了输入值。

有人可以帮我吗?

【问题讨论】:

标签: java


【解决方案1】:

list[1] 是原始类型。您不能在其上调用方法。因此,当您尝试拨打 equal(您的意思是 equals()?)时,您会收到错误消息。

除此之外,您的逻辑没有意义。您正在尝试将 intString 进行比较,然后将布尔结果与另一个 int 进行比较

【讨论】:

  • 知道了!但是,我怎样才能获得“?”符号在数组中的位置?
  • @gfdadaf 您的数组是int 数组,因此它不会包含String
【解决方案2】:

在您的calculate 函数中,您传递了position,但您甚至没有使用它并将0 分配给它。

当 i=1 时,for 循环也会抛出异常,因为您的代码将尝试访问不存在的 list[i+4]=list[5],因此会得到 ArrayIndexOutOfBound Exception

由于您的数组仅包含 int 类型,因此您无需担心 ? 的位置,因为 ? 不是 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。
  • 请检查不同的输入。也许你得到 0 为传递的输入。例如,如果我输入?,1,2,3,4,列表数组将为[1,2,3,4]calculate 函数将返回1*3+2*1+3*0+4(-1)=1
  • 真的!知道我看到了。如果我想使用 if 来检测 ? 的确切位置,我该怎么办?
  • @gfdadaf 你的 int 数组中没有 ?。为什么你到底要?的位置
  • 因为在这种情况下有人写 1, 2 ? 3, 4 相反,程序必须说这不是 ? 的正确位置。我知道我应该在主要问题中写下这些信息。
猜你喜欢
  • 2017-12-20
  • 2013-09-16
  • 1970-01-01
  • 2020-06-08
  • 2016-05-09
  • 2016-02-21
  • 2012-11-03
  • 2015-04-25
  • 2023-03-31
相关资源
最近更新 更多