我用java代码编写了一个复杂的算法。但是,我想运行代码类 5 次,而不是自己做。我通过T2类调用T1类并将T1类循环5次。问题是 Java 保存代码的旧值并在下一个循环中使用它们。我的问题是如何在 T1 代码末尾每次使用新值(不使用零作为静态变量)运行 T1 类 5 次。这是我所做的一个简单示例: 封装测试;
public class T1 {
public static int n, m, o, i, j;
public static double T;
public static int[][] V = new int[100][100];
public static int[] C = new int [100];
public static void main(String[] args){
m=o+1; n=o+1; o=m+n;
for(j = 0 ; j < n ; j++){
for(i = 0 ; i < m ; i++){
V[i][j] = i+j+o;
System.out.print(V[i][j]+" ");
}
System.out.print("\n");
}
System.out.println("--------");
for(j = 0 ; j < n ; j++){
C[j] = j+o;
System.out.print(C[j]+" ");
}
System.out.println("\n--------");
System.out.println("o = "+o);
System.out.println("*******************************");
}
}
<小时/>
package Test;
public class T2 {
public static void main(String[] args) {
for(int i =0 ; i <5 ; i++){
T1.main(args);
}
}
}
这些代码的结果是:
2
--------
2
--------
o = 2
*******************************
6 7 8
7 8 9
8 9 10
--------
6 7 8
--------
o = 6
*******************************
14 15 16 17 18 19 20
15 16 17 18 19 20 21
16 17 18 19 20 21 22
17 18 19 20 21 22 23
18 19 20 21 22 23 24
19 20 21 22 23 24 25
20 21 22 23 24 25 26
--------
14 15 16 17 18 19 20
--------
o = 14
*******************************
虽然我希望它们如下(不在 T1 类末尾放置 o=0):
2
--------
2
--------
o = 2
*******************************
2
--------
2
--------
o = 2
*******************************
2
--------
2
--------
o = 2
*******************************
最佳答案
您将 T1
中的所有内容定义为 static
,这意味着变量绑定(bind)到类而不是类的实例。您需要从字段和方法中删除所有static
说明符,并在每次循环迭代中创建一个新实例。另外,不要将代码放在 main
中,而应放在非 staitc 的其他方法中。
for(int i =0 ; i <5 ; i++){
new T1().process(args);
}
如果您需要保持所有变量静态,您可以引入一个 static reset()
方法,您可以将所有变量设置为其默认值(第一次调用之前的值)并调用该方法每次迭代后。
关于java - 同一个类跑5次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31831125/