首页 > 解决方案 > 我们如何使用从一种方法到另一种方法的变量,例如我试图将一个变量除以另一个

问题描述

我正在尝试在 pointsaverage 方法中将变量从 pointsearned 和 creditsearned 方法中划分出来,但是当我运行它时它会给出“你的平均成绩是 NaN”,我该如何解决这个问题?(我是初学者)

public class JavaApplication40 {
static Scanner keyboard = new Scanner(System.in);

public static void main(String[] args) {
   double credits = 0;
   double Points = 0;
   double average = 0;

   IDnumber();
    CreditsEarned(credits);
    PointsEarned(Points);
    System.out.println("Your grade point average is" +  PointAverag(average, Points, credits));
}
public static void IDnumber(){
  String docNuMBER; 
    System.out.println("Enter your student ID number ");
    docNuMBER = keyboard.nextLine();

}

public static double CreditsEarned( double credits){
    double NumCreditsEarned;
    System.out.println("Enter your Credit hours earned");
    NumCreditsEarned = keyboard.nextDouble(); 
    return NumCreditsEarned;
}

public static double PointsEarned(double points){
   double NumberOpoints;
   System.out.println("Enter your credit points");
   NumberOpoints = keyboard.nextDouble();
   return NumberOpoints;
}
public static double PointAverag(double grade , double NumberOpoints ,
        double NumCreditsEarned) {
   double average ;
    average =   NumberOpoints/NumberOpoints;
    return average ;

标签: java

解决方案


这是您的程序中发生的事情:

您将 'credits' 和 'points' 设置为 0。当您将这两个变量传递给 'pointAverag' 时,它们没有被修改

System.out.println("Your grade point average is" +  PointAverag(average, Points, credits));

从字面上看,这条线是这样做的:

System.out.println("Your grade point average is" +  PointAverag(0, 0, 0));

并最终导致:

average = 0/0

在“PointAverag”中,当存储在双精度中时,它是 NAN。

注意这一行:

average =   NumberOpoints/NumberOpoints;

它有逻辑错误。它将始终存储 1 或 NAN。

正如评论中提到的,您需要通过在其中存储方法“PointsEarned”和“CreditsEarned”的返回值来更新这些变量“credits”和“points”:

CreditsEarned(credits);
PointsEarned(Points);

变成

credits = CreditsEarned(credits);
points = PointsEarned(Points);

希望这可以帮助。


推荐阅读