[英]java- method cannot be found from non static
我有2个类,即dog和printing,dog类用于通过char [] []发送以进行打印,以便可以将其打印到打印机。 但是,狗类在打印类中找不到打印方法。
//Printing class-
public class Printing implements Printable, ActionListener {
String str = "";
public String printString(char [][] grid ){
for(int i=0;i<9;i++){
for (int j=0;j<9;j++){
str += String.valueOf(grid[i][j]);
}
str += "\n";
}
return str;
}
}
然后,我也需要在另一种方法中使用该str。 当我键入Printing.printString(grid);
不能从静态上下文中引用它。 当我将其更改为public static String(char [][] grid )
其方法无法找到str字符串变量。
您不能调用Printing.printString(grid);
除非您将其设置为静态,否则将这样。
另外,如果将printString()
方法设置为静态,则需要将str
声明为静态,因为您不能在静态方法中引用非静态变量。
因此,您的代码应如下所示:
public class Printing implements Printable, ActionListener {
static String str = "";
public String printString(char [][] grid ){
for(int i=0;i<9;i++){
for (int j=0;j<9;j++){
str += String.valueOf(grid[i][j]);
}
str += "\n";
}
return str;
}
}
阅读有关静态变量和方法的更多信息
str
成员也必须是静态的。 只要确保在每次调用printString
将其重置printString
。
class Printing
{
private static String str = "";
public static printString( char[][] grid )
{
str = "";
for(int i=0;i<9;i++)
{
for (int j=0;j<9;j++)
{
str += String.valueOf(grid[i][j]);
}
str += "\n";
}
return str;
}
}
另外,这实际上不是问题的一部分,但是我建议在这种情况下使用StringBuffer
类。
这会有所帮助
public String printString(char [][] grid ){
String str = "";
for(int i=0;i<9;i++){
for (int j=0;j<9;j++){
str += String.valueOf(grid[i][j]);
}
str += "\n";
}
return str;
}
static String str = "";
public static String printString(char [][] grid ){
for(int i=0;i<9;i++){
for (int j=0;j<9;j++){
str += String.valueOf(grid[i][j]);
}
str += "\n";
}
return str;
}
现在您可以使用Printing.printString(grid);
调用该方法Printing.printString(grid);
非静态实例变量不能在静态类中引用,反之亦然
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.