提问人:Arson1st 提问时间:1/25/2023 更新时间:1/25/2023 访问量:63
如何避免在此代码中使方法和变量成为静态的?
How do I avoid making methods and variables static in this code?
问:
我正在解决我的 java 课程过去的考试,我正在为其中之一而苦苦挣扎。我一直得到错误的结果,我认为这是因为所有类和实例变量都是静态的。如何避免使它们静止?此外,这个问题基本上希望您找到 args[1] 中给出的位置的相同字母,如果它们靠近给定位置,请将它们转换为“S”(如果需要,参数是“K,K,K,Y-K,Y,M,M-K,Y,Y,Y 2,1 S”)
public class MatrixRefill {
public static String[][] matrix;
public static int rows;
public static int cols;
public static String enemy;
public static String target;
public static void main(String[] args) {
target = args[2];
rows = Integer.parseInt(args[1].substring(0,1));
cols = Integer.parseInt(args[1].substring(2));
matrix = matrixCreator(args[0]);
enemy = matrix[rows][cols];
recursive(rows, cols, target);
printer(matrix);
}
public static String[][] matrixCreator(String mx) {
int ro = 0;
int co = 0;
for (int i = 0; i < mx.length(); i++) {
if (mx.substring(i,i+1).equals(","))
co++;
if (mx.substring(i,i+1).equals("-"))
ro++;
}
String[][] matriks = new String[ro+1][co/3+1];
ro = 0;
co = 0;
for (int j = 0; j < mx.length(); j++) {
if (mx.substring(j,j+1).equals(","))
co++;
else if (mx.substring(j,j+1).equals("-")) {
ro++;
co = 0;
}
else
matriks[ro][co] = mx.substring(j,j+1);
}
return matriks;
}
public static void recursive(int row, int col, String target) {
if (valid(row,col)) {
recursive(row+1,col, target);
recursive(row,col+1, target);
recursive(row,col-1, target);
recursive(row-1,col, target);
matrix[row][col] = target;
}
}
public static boolean valid(int row, int col) {
boolean result = false;
if (row >= 0 && row < matrix.length && col >= 0 && col < matrix[row].length)
if (matrix[row][col] == enemy)
result = true;
return result;
}
public static void printer(String[][] owo) {
for(int i = 0; i < owo.length; i++) {
for(int j = 0; j < owo[i].length; j++) {
System.out.print(owo[i][j]);
if(j < owo[i].length - 1)
System.out.print(" ");
}
System.out.println();
}
}
}
答:
1赞
WJS
1/25/2023
#1
从方法和实例字段中删除 static 关键字。但是要从内部调用它们,您需要创建一个包含类(在本例中为包含方法的类),并使用它来调用其他方法。我有时所做的是创建一个实例方法(即非静态方法)并调用它来启动该过程。然后,我将把所有主要的东西都放在那个方法中。下面是一个示例。main
instance
main
public static void main(String[] args) {
MatrixRefill mr = new MatrixRefill();
mr.start();
}
public void start() {
target = args[2];
rows = Integer.parseInt(args[1].substring(0,1));
cols = Integer.parseInt(args[1].substring(2));
matrix = matrixCreator(args[0]);
enemy = matrix[rows][cols];
recursive(rows, cols, target);
printer(matrix);
}
// rest of code here
}
通过将 IN 中的内容放入方法中,您可以调用其他实例方法并访问实例字段,而无需使用对类的引用来限定它们(即在本例中,前缀为main
start
mr.
)
评论
0赞
andrewJames
1/25/2023
"创建一个包含类的实例“——作为一个完全的初学者,我记得我花了一段时间才真正融入这个概念(及其更广泛的含义)。
评论