Java for循环中的变量是局部变量,我想将其公开 if(a!=1&&solone==(int)solone&&soltwo==(int)soltwo){ //(lx+o)(mx+p) int h=(a*c); 列表因子=新的ArrayList(); for(int i=1;i
我的名为Factored的字符串是我以后在代码中打印时需要使用的字符串。我不能使用它,因为它无法识别for循环之外的变量。我如何将其公开?当我在字符串前面添加public时,它说只允许final?而且,我不能简单地将无关代码移到for循环之外op,因为它完全取决于整数“ii”,它是循环的一部分。帮助!您真的希望它成为类实例状态的一部分吗?如果是,请在方法之外声明它:Java for循环中的变量是局部变量,我想将其公开 if(a!=1&&solone==(int)solone&&soltwo==(int)soltwo){ //(lx+o)(mx+p) int h=(a*c); 列表因子=新的ArrayList(); for(int i=1;i,java,string,variables,for-loop,public,Java,String,Variables,For Loop,Public,我的名为Factored的字符串是我以后在代码中打印时需要使用的字符串。我不能使用它,因为它无法识别for循环之外的变量。我如何将其公开?当我在字符串前面添加public时,它说只允许final?而且,我不能简单地将无关代码移到for循环之外op,因为它完全取决于整数“ii”,它是循环的一部分。帮助!您真的希望它成为类实例状态的一部分吗?如果是,请在方法之外声明它: if (a != 1 && solone == (int)solone && soltwo ==
if (a != 1 && solone == (int)solone && soltwo == (int)soltwo){
// (lx+o)(mx+p)
int h = (a*c);
List<Integer> factors = new ArrayList<Integer>();
for (int i = 1; i < Math.sqrt(h); i++) {
if (h % i == 0)
factors.add(i);
}
Integer result = null;
for (int ii: factors) {
if (b == ii + h/ii){
result = ii;
// ax^2+hiix+iix+c
}
int hii = h/ii;
int gcd1 = Euclid.getGcd(a, hii);
int gcd2 = Euclid.getGcd(ii, c);
String Factored = FactoredForm.getFF(gcd1, gcd2, a, hii);
}
我建议你不要将其公开。如果你需要公开其价值,请通过属性公开
但是,请仔细考虑它是否真的在逻辑上是此类状态的一部分。如前所述,请重新查看命名约定。
public
属性与局部变量无关,而是与实例变量相关
在相同的函数声明中,遵循两条规则:
- 声明的顺序:如果局部变量尚未声明,则不能使用它
- 作用域:如果变量已在作用域(
)内声明,则无法从作用域外访问它{…}
private string factored;
public void Whatever(...)
{
factored = FactoredForm.getFF(gcd1, gcd2, a, hii);
}
或者将其作为实例变量(毫无意义,因为它是一个需要打印的本地变量,但不管怎样):
或者第三,您可以从方法返回变量并在其他地方使用它:
class FooBar
{
String factored;
void method() {
...
...
if (...) {
...
...
factored = whatever;
}
System.out.println(factored);
}
}
听起来您需要进一步拆分您的方法。您需要
返回
字符串-您不能像这样引用超出范围的变量(有很多很好的理由)。
class FooBar
{
String factored;
void method() {
...
...
if (...) {
...
...
factored = whatever;
}
System.out.println(factored);
}
}
class FooBar
{
String method() {
...
...
if (...) {
...
...
return whatever;
}
return null;
}
void otherMethod() {
String factored = method();
System.out.println(factored);
}
}