0

我一直在编写和调用一些方法,一种显示当前日期,另一种打印星号金字塔。我已经到了代码可以编译的地步,但我遇到了另一个问题。当我尝试在 JGrasp 中运行时,出现错误:以下文件缺少类或内部类文件:(文件名)。不建议在更正此问题之前继续操作。. 在互联网上没有找到任何关于此的信息,我再次尝试但在 Eclipse 中。我这次得到的错误信息是:Selection does not contain a main type

如果有人可以概述我的代码并告诉我他们是否发现问题,我将不胜感激。解释也很棒,因为我正在努力学习和提高自己作为程序员的能力。谢谢!!

import java.util.Calendar;

public class prcMeth {

    public static void showCurrentDate() {
        Calendar cal = Calendar.getInstance();
        int month = cal.get(Calendar.MONTH);
        int day = cal.get(Calendar.DATE);
        int year = cal.get(Calendar.YEAR);
        System.out.println(year + "-" + month + "-" + day + " ");
    }

    public static boolean printPyramid(int n) {
        int number = n;
        if (number <= 0 || number > 10) {
            System.out.println("Your parameter is invalid; you input n = " + n);
            return false;
        }
        for (int row = 1; row <= number; row++) {
            for (int space = number; space > row; space--) {
                System.out.print(" ");
            }
            for (int star = 1; star <= row; star++) {
                System.out.print("*");
                System.out.println();
            }
        }
        return true;
    }

    public static void main(String[] args) {

        System.out.println("Hello, world!");

        // Calling first function
        showCurrentDate();

        // Calling second function
        System.out.println("n=0");
        printPyramid(0);

        System.out.println("n=1");
        printPyramid(1);

        System.out.println("n=5");
        printPyramid(5);

        System.out.println("n=10");
        printPyramid(10);

        System.out.println("n=11");
        printPyramid(11);
    }
}
4

3 回答 3

0

当您有一个窗格而不是实际关注的类时,您描述的问题很容易在 Eclipse 中发生。例如,即使您在编辑器中打开了您的类,并且它是唯一打开的类,如果您(例如)专注于控制台窗格,Eclipse 将在控制台中查找 main,当然,找不到一。

于 2013-08-23T06:28:32.250 回答
0

我认为这个程序没有任何问题,因为当我在记事本中复制这个程序并尝试运行它时,它会成功运行。所以这段代码没有问题。

唯一合乎逻辑的问题是

for (int star = 1; star <= row; star++) {

           System.out.print("*");

            System.out.println();

       }

应该

for (int row = 1; row <= number; row ++){

       for (int space = number; space > row; space--){

           System.out.print(" ");

        }

        for (int star = 1; star <= row; star++) {

           System.out.print("*");

       }
       System.out.println();

  }

以正确的格式打印金字塔。由于您的 System.out.println() 在内部循环内,因此当前代码中的所有星号都打印在新行中。

于 2013-08-23T06:03:24.767 回答
0

我已经测试过你的代码工作正常。如果在eclipse中运行代码有任何问题,那么可能是eclipse无法很好的main方法。所以做一件事右键单击代码并选择运行作为运行配置,在那里您可以提供主类和与 JVM 相关的所有其他条目

于 2013-08-23T06:04:29.897 回答