繁体   English   中英

尝试调试Java代码

[英]Trying to Debug Java Code

我猜我没有得到数组,因为我以某种方式再次设法打破了一个完美的程序。

它早些时候工作了,但是后来我做了些事情,但是它停止了工作。 我想回到原来的样子。

主要代码:

public class Lab14d

 {

  public static void main( String args[] )
{

    int r = 5;
    int e = 3;
    int k = 9;

    double[]g ={100,90,85,72.5,95.6};
    double[]c ={50.0,100.0,80.0};
    double[]a ={93.4,-90.0,90.0};
    double[]d ={1,2,3,4,5,6,7,8,9};

    Grades w = new Grades();


    w.SortArray(g);
    w.getSum(g);
    w.getAverage(r);
    System.out.println(w);

    w.SortArray(c);
    w.getSum(c);
    w.getAverage(e);
    System.out.println(w);

    w.SortArray(a);
    w.getSum(a);
    w.getAverage(e);
    System.out.println(w);

    w.SortArray(d);
    w.getSum(d);
    w.getAverage(k);
    System.out.println(w);


}
}     

其他文件中的代码

public class Grades

  {

    int x = 0;
    public Grades()
    {
     x = 0;
     }
public static SortArray(double[] array)
{
    Arrays.sort(array);
    for (int i = 0; i < array.length; i++)
    {
        return "Grade " + i + " :: " + "   " + array[i];
    }

}
public double getSum(double[] array )
{
    double sum=0.0;
    for(int spot = 0; spot <= array.length; spot++)
    {
        sum = sum + array[spot];
    }

    return sum;
}

public double getAverage(int x)
{
    double average=0.0;
    average = getSum()/2;
    return average;
}
public String toString()
{
    return "Average = " + getAverage();
}
 }

我想要的

grade 0 ::  100.00
grade 1 ::   90.00
grade 2 ::   85.00
grade 3 ::   72.50
grade 4 ::   95.60

average = 88.62


grade 0 ::   50.00
grade 1 ::  100.00
grade 2 ::   80.00

average = 76.67


grade 0 ::   93.40
grade 1 ::  -90.00
grade 2 ::   90.00

average = 31.13


grade 0 ::    1.00
grade 1 ::    2.00
grade 2 ::    3.00
grade 3 ::    4.00
grade 4 ::    5.00
grade 5 ::    6.00
grade 6 ::    7.00
grade 7 ::    8.00
grade 8 ::    9.00

average = 5.00

我感谢您提供的任何帮助。

您的average = getSum()/2;代码行average = getSum()/2; 应该给出编译时错误,我们无法在文件中看到该方法。 return "Average = " + getAverage();

主要问题是您已经定义了接受参数的方法,但是在这些地方,您调用的是没有这些参数的方法。

我真的怀疑这段代码应该如何工作, public static SortArray(double[] array)没有指定RETURN类型!

您的方法只是返回结果,但是您没有将其分配给任何变量或未打印结果。 而不是尝试打印对象本身! return语句不会打印到控制台上。它只会将结果传递到调用它的地方/我们分配给它的地方。我的建议是:

1:将返回的statemnts更改为print语句(如果您希望自己做,可以使用所有方法)

return "Grade " + i + " :: " + "   " + array[i];

System.out.println("Grade " + i + " :: " + "   " + array[i]);

我认为最好从那里开始打印,因为在上面的语句中您需要从循环本身打印结果,这比存储然后传递并打印它们要好。

您的代码充满问题,返回错误的值,具有未使用的变量(x),未指定返回类型等。下面是更正的版本。 我将Double []替换为Double [](对象而不是基元),以便可以使用Arrays.Sort按降序对它们进行排序(根据您的要求)。 Arrays.Sort仅与对象一起使用,而不与图元一起使用。 该代码产生所需的输出。

主班:

public class Lab14d {
    public static void main(String[] args) {
        Double[] g = { 100.00d, 90.00d, 85.00d, 72.5, 95.6 };
        Double[] c = { 50.0, 100.0, 80.0 };
        Double[] a = { 93.4, -90.0, 90.0 };
        Double[] d = { 1.00d, 2.00d, 3.00d, 4.00d, 5.00d, 6.00d, 7.00d, 8.00d, 9.00d };

        Grades.SortArray(g);
        System.out.println("Average = " + String.format("%.2f", Grades.GetAverage(g)));
        System.out.println();

        Grades.SortArray(c);
        System.out.println("Average = " + String.format("%.2f", Grades.GetAverage(c)));
        System.out.println();

        Grades.SortArray(a);
        System.out.println("Average = " + String.format("%.2f", Grades.GetAverage(a)));
        System.out.println();

        Grades.SortArray(d);
        System.out.println("Average = " +String.format("%.2f", Grades.GetAverage(d)));
        System.out.println();
    }
}

年级:

import java.util.Arrays;
import java.util.Collections;

public class Grades {

    public static void SortArray(Double[] array) {
        Arrays.sort(array, Collections.reverseOrder());
        for (int i = 0; i < array.length; i++) {
            System.out.println("Grade " + i + " :: " + array[i]);
        }
    }

    private static double GetSum(Double[] array) {
        double sum = 0.00d;
        for (int i = 0; i < array.length; i++) {
            sum += array[i];
        }
        return sum;
    }

    public static double GetAverage(Double[] array) {
        double total = GetSum(array);
        return total / array.length;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM