在while循环中乘以两个整数的意外类型错误

时间:2017-12-05 18:44:49

标签: java compiler-errors

我应该为我的程序实现一个方法,它将所有的整数乘以intervall n1,n2。这是我的代码:

static int productofIntervall (int n1, int n2){
    int a;
    while(n1 <= n2){
        n1*n2 = a;
        n1=n1++;
    }
    return(a);
}   
        public static void main(String[] args){
        System.out.println(productofIntervall(6,11));
    }

}

当我尝试遵守时,我收到了错误:

Main.java:6: error: unexpected type
                        (n1)*(n2)=a;
                            ^
  required: variable
  found:    value
1 error

谁能告诉我出错了什么? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

您需要初始化a = 0并设置a = n1*n2而不是相反。同样n1 = n1++可以并且最好由n1++

替换

您基本上将两个数字的乘积设置为一个不会起作用的值(未初始化的变量)

答案 1 :(得分:0)

鉴于以下代码:

package com.example.so.questions;

public class SO47660627CompilationAndIncrement {

    public static void main(String[] args) {

        int a = 0;
        int b = 1;
        int c = 0;
        int d = 1;
        int e = 0;
        int f = 0;
        int g = 1;
        int h = 1;
        int i = 0;
        int j = 0;

        a = b++;
        c = ++d;
        e = e++;
        f = ++f;
        i = g-(g++);
        j = h-(++h);

        System.out.println(" int a=0; b=1; a=b++ // a is : "+a+" and b is : "+b);
        System.out.println(" int c=0; d=1; c=++d // c is : "+c+" and d is : "+d);
        System.out.println(" int e=0; e = e++ ; // e is : "+e);
        System.out.println(" int f=0; f = ++f ; // f is : "+f);
        System.out.println(" int g=1; int i = g-(g++); // i is : "+ i);
        System.out.println(" int h=1; int j = h-(++h); // j is : "+ j);

    }

}

如果您运行FindBugs源代码分析器,则会将其标记为关注点 - 包含以下内容的行:

e = e++;

解释是:

  

Bug:覆盖增量   com.example.so.questions.SO47660627CompilationAndIncrement.main(字符串[])

     

代码执行递增操作(例如,i ++)然后   立即覆盖它。例如,i = i ++会立即覆盖   增量值与原始值。

运行上面的代码时,输​​出为:

 int a=0; b=1; a=b++ // a is : 1 and b is : 2
 int c=0; d=1; c=++d // c is : 2 and d is : 2
 int e=0; e = e++ ; // e is : 0
 int f=0; f = ++f ; // f is : 1
 int g=1; int i = g-(g++); // i is : 0
 int h=1; int j = h-(++h); // j is : -1

从上面的输出中,我们可以得出结论,post或pre increment操作涉及创建一个存储原始值的临时变量 - 在增量操作之前,在后增量操作的情况下和在增加后的情况下预增量运算,然后将存储在临时变量中的结果进一步应用于表达式。