尝试调试Java代码

时间:2014-11-20 05:48:15

标签: java arrays compiler-errors logic

我想我没有得到数组,因为不知何故我再次设法打破一个非常好的程序。

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

主要代码:

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();
}
 }

out put i want

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

我感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

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

就是这种情况

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

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

答案 1 :(得分:0)

你的方法只返回结果,但你没有将它分配给任何变量或者不打印你得到的结果!!而不是你试图打印对象本身! return语句不会打印到控制台..它只会将结果传递给它所在的位置/我们分配给它的位置。 我的建议是:

1:将返回的状态更改为打印语句(如果您希望自己在那里执行所有方法)

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

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

我认为最好从那里打印,因为在上面的语句中你需要从循环本身打印结果,它比存储然后传递和打印它更好......

答案 2 :(得分:0)

您的代码充满了问题,您返回了错误的值,未使用的变量(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;
    }
}