[英]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.