我应该为我的程序实现一个方法,它将所有的整数乘以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
谁能告诉我出错了什么? 提前谢谢。
答案 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操作涉及创建一个存储原始值的临时变量 - 在增量操作之前,在后增量操作的情况下和在增加后的情况下预增量运算,然后将存储在临时变量中的结果进一步应用于表达式。