簡體   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