【问题标题】:Error wtih println: Location class,method println()println 出错:位置类,方法 println()
【发布时间】:2014-02-07 11:55:08
【问题描述】:

我正在尝试在命令提示板上创建可打印的内容,以便设法在 CMD 中创建井字游戏。 虽然,当我为我的板子和单元格创建课程时, Java 在我的 print 和 println 下抛出一个错误,告诉我:

symbol: method println()  -or- method print() .etc...

location: class board

error: cannot find symbol

我的代码有什么问题? 这是我的整个 .java 文件:

我只是想让它编译,而不是运行

import acm.program.*;

public class board {

    private static final int ROWS=3;
    private static final int COLS=3;
    private int[][] board1 = new int[ROWS][COLS];


    //constructor
    public  board() {
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                board1[i][j]=0;
                printBoard();           
            }
        }
    }

    public void printBoard() {
        for(int row =0; row<ROWS; row++) {
            for (int col=0; col<COLS; col++) {
                printCell(board1[row][col]);
                if (col != (COLS-1)) {
                    print("|");   // print vertical partition
                }
            }
            println();
            if (row !=(ROWS-1)) {
                println("-----------");
            }
        }
        println();
    }

    public void printCell(int content) {
         if (content == 0)  {print("   ");}
    }

}

只需将 print() 和 println() 替换为 system.out 即可编译。 但这太奇怪了。 ACM 包包括 println() 和 print() 等方法,以使其更容易。但现在它是固定的。谢谢。

编辑 2:为了使用 print() 和 println() 进行编译,需要:“public class board extends Program”而不仅仅是“public class board”

【问题讨论】:

  • 如果你想使用 ACM,你必须有 acm.jar 文件在你的类路径和你的类 board 你必须 extend Program 类如:class board extends Program{}
  • 我的类路径中有 acm.jar 文件。但是当我使用构造函数创建一个简单的类时,我是否需要像“扩展程序”一样扩展程序?构造函数“public board”被“加载”到一个新的 .java 文件中,该文件还导入了 acm 和“扩展程序”..
  • Java 不是这样,所以你需要确定Constructor "public board" is being "loaded" into a new .java

标签: java class constructor acm-java-libraries


【解决方案1】:

尝试将println()print() 替换为

System.out.print();
System.out.println();

如果你想使用 ACM,你的类路径中必须有 acm.jar 文件,并且你必须在 board 类中扩展 Program 类,例如:class board extends Program{}

另见

【讨论】:

    【解决方案2】:

    以下是更正后的代码:

    public class board {
    
        private static final int ROWS=3;
        private static final int COLS=3;
        private int[][] board1 = new int[ROWS][COLS];
    
    
        //constructor
        public  board() {
            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 3; j++) {
                    board1[i][j]=0;
                    printBoard();           
    
                }
            }
        }
    
    
        public void printBoard(){
           for(int row =0; row<ROWS; row++){
               for (int col=0; col<COLS; col++){
                   printCell(board1[row][col]);
                   if (col != (COLS-1)) {
                       System.out.print("|");   // print vertical partition
                   }
                }
               System.out.println("");
               if (row !=(ROWS-1)) {
                   System.out.println("-----------");
               }
            }
        System.out.println();
        }
    
    
        public void printCell(int content) {
             if (content == 0)  {System.out.print("   ");}
        }
    }
    

    您只是错过了一些对打印语句“System.out”的调用。

    【讨论】:

    • 是的。它编译!但这太奇怪了。 ACM 包包括 println() 和 print() 等方法,以使其更容易。但是现在..
    • 你好@HpdsbuZt。你需要你的“acm.program.*”进口吗?我没有使用任何东西,并且我的程序已编译。如果需要,您能告诉我们一些关于包裹的信息吗?
    • 是的。 ACM 包为您提供了一些命令和工具,使您可以“更轻松地”使用 Java 编写代码,尤其是创建游戏等图形程序。它为您提供了来自“普通 java”的更简单的命令,例如: pintln() ---> system.out.println() public void run() --> public static void main(String[] args) 我们使用它在第一年和第一学期@我的大学(cs)
    • 所以@HpdsbuZt,除了您不需要在 ACM JTF 包中使用“System.out”而不是“print”和“println”之外,我的解决方案是否有帮助?如果是这样,你能支持我的回答吗?
    【解决方案3】:

    println()更改为

    System.out.print(); or   
    System.out.println();
    

    对于More

    【讨论】:

      猜你喜欢
      • 2015-10-27
      • 2022-12-31
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 2016-12-02
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      相关资源
      最近更新 更多