【问题标题】:"Exception in thread 'main' java.lang.NoClassDefFoundError: main".“线程 'main' java.lang.NoClassDefFoundError: main 中的异常”。
【发布时间】:2016-03-01 18:19:20
【问题描述】:

当我尝试运行此代码“线程 'main' java.lang.NoClassDefFoundError: main 中的异常”时,我不断收到此错误。谁能帮我吗?这是我的代码。另外我必须使用缓冲阅读器来让它读取输入,但我不知道如何将它实现到我已经拥有的东西中。任何帮助都会很棒!

导入 java.util.Arrays;

    public class StatPackage {

    private int i, numScores, place;
    private double sum, mean, median, sumOfSquares, variance, stdDev;
    private double [] inputs;
    private double [] reducedArray;
    private int [] histogramArray;
    private final int MAX = 500;


    //constructor
    public StatPackage(){
        inputs = new double[MAX]; //creates array
        numScores = 0; // count is 0
        histogramArray = new int[MAX];

    }


    public void Histogram(){
        //histogramArray = Arrays.copyOf(inputs, MAX);

        for (i = 0; i < numScores; i++){ 

            //place = (int)(inputs[i]/10);

            if (inputs[i] > 0 && inputs[i] <= 10){ histogramArray[0]+=1;}
            if (inputs[i] > 10 && inputs[i] <= 20){ histogramArray[1]+=1;}
            if (inputs[i] > 20 && inputs[i] <= 30){ histogramArray[2]+=1;}
            if (inputs[i] > 30 && inputs[i] <= 40){ histogramArray[3]+=1;}
            if (inputs[i] > 40 && inputs[i] <= 50){ histogramArray[4]+=1;}
            if (inputs[i] > 50 && inputs[i] <= 60){ histogramArray[5]+=1;}
            if (inputs[i] > 60 && inputs[i] <= 70){ histogramArray[6]+=1;}
            if (inputs[i] > 70 && inputs[i] <= 80){ histogramArray[7]+=1;}
            if (inputs[i] > 80 && inputs[i] <= 90){ histogramArray[8]+=1;}
            if (inputs[i] > 90 && inputs[i] <= 100){ histogramArray[9]+=1;}

        }
        System.out.print(" 1 - 10  | ");
        for (i = 0; i < (histogramArray[0]/5); i++){
        System.out.print("*");
        }
        System.out.println();
        System.out.print("11 - 20  | ");
        for (i = 0; i < (histogramArray[1]/5); i++){
        System.out.print("*");
        }
        System.out.println();
        System.out.print("21 - 30  | ");
        for (i = 0; i < (histogramArray[2]/5); i++){
        System.out.print("*");
        }
        System.out.println();
        System.out.print("31 - 40  | ");
        for (i = 0; i < (histogramArray[3]/5); i++){
        System.out.print("*");
        }
        System.out.println();
        System.out.print("41 - 50  | ");
        for (i = 0; i < (histogramArray[4]/5); i++){
        System.out.print("*");
        }
        System.out.println();
        System.out.print("51 - 60  | ");
        for (i = 0; i < (histogramArray[5]/5); i++){
        System.out.print("*");
        }
        System.out.println();
        System.out.print("61 - 70  | ");
        for (i = 0; i < (histogramArray[6]/5); i++){
        System.out.print("*");
        }
        System.out.println();
        System.out.print("71 - 80  | ");
        for (i = 0; i < (histogramArray[7]/5); i++){
        System.out.print("*");
        }
        System.out.println();
        System.out.print("81 - 90  | ");
        for (i = 0; i < (histogramArray[8]/5); i++){
        System.out.print("*");
        }
        System.out.println();
        System.out.print("91 - 100 | ");
        for (i = 0; i < ((histogramArray[9]/5) + (histogramArray[10]/5)); i++){
        System.out.print("*");
        }
        System.out.println();
    }   
    //go through each value of reducedArray, find out what numbers it is between, and increment array value by 1. 
// so if the test score is 35, increment reducedArray[3] by 1. then, divide each array index by 5, print that number of stars. 



    //insert scores into inputs array
    public void insert (double val){
        if (numScores < MAX){
            inputs[numScores] = val;
            numScores++;
            reducedArray = Arrays.copyOf(inputs, numScores);
        }
    }

     double Mean() {
        for (i = 0; i < numScores; i++){
            sum += reducedArray[i];
        }   
        mean = (sum/numScores);
        return mean;            
    }

     double Median(){
        Arrays.sort(reducedArray);
        double num1 = reducedArray[(numScores/2)];
        double num2 = reducedArray[((numScores/2)-1)];

        if (numScores % 2 == 0){
            median = ((num1 + num2)/2);
        }
        if (numScores % 2 != 0){
            median = reducedArray[(numScores/2)];       
        }
        return median;
    }

     double Variance(){

        sum = 0;
        for (i = 0; i < MAX; i++){
            sumOfSquares += (inputs[i]*inputs[i]);
        }
        for (i = 0; i < MAX; i++){
            sum = sum + inputs[i];
        }
        variance = ((sumOfSquares/numScores) - (sum * sum)/(numScores * numScores));
        return variance;
    }

     double StdDev (double varianceinput){
        stdDev = Math.sqrt(varianceinput);
        return stdDev;
    }
    }   

【问题讨论】:

  • 如何运行代码?
  • 你在哪一行得到异常?
  • 我通过 [j​​ava Lab5] 在 unix 终端中运行代码。它编译没有问题。 @JPMoresmau
  • 你的主要方法在哪里?你需要它来运行。
  • 你以前用java写过吗?我很困惑你是如何开始写这篇文章而不知道它是如何开始的

标签: java arrays bufferedreader


【解决方案1】:

你的类没有 main 方法。第一步,尝试添加如下内容:

  public static void main(String[] args) {
    final StatPackage statPackage = new StatPackage();
    statPackage.Histogram();
  }

main 方法是Java 的入口点。每个可执行的 java 程序都需要一个。

【讨论】:

  • 谢谢,我实现了它并编译了它。现在我只需要让它接受输入。
【解决方案2】:

线程“主”java.lang.NoClassDefFoundError 中的异常: 首先检查你的类名和保存的文件名是否相同? 不等于这两个名称,您可以获得上述错误。 请记住这些名称区分大小写。 例如:- 保存的文件名-test.java 类名:Test.java(在文本板中) 那么你可以得到上述错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    相关资源
    最近更新 更多