Возникли проблемы с запуском этого кода, я получаю ошибку .class - PullRequest
0 голосов
/ 18 апреля 2020

У меня проблемы с запуском.

Мне не удается заставить возвращаемое значение работать должным образом. Я несколько недель изучаю этот курс и многому учусь, но этот проект стал для меня чем-то вроде борьбы.

Я собираю данные, создаю среднее и затем использую это среднее для вывода соответствующей буквенной оценки.

Любая помощь будет оценена.

   import java.util.*;
    public class LetterGrade
    {
       public static void main(String args[]) 
       {
         calculateAvg();
         double avgScore;
         printLetter(double);


        }
        public static void calculateAvg()
           {      
              Scanner console = new Scanner(System.in);
              double avgScore; 

          for (double i = 0; i >0; i++) 
          {
              System.out.println("Enter your full name.");
              String name = console.nextLine();
              System.out.println("Enter test score 1");
              double score1 = console.nextDouble();
              System.out.println("Enter test score 2");
              double score2 = console.nextDouble();
              System.out.println("Enter test score 3");
              double score3 = console.nextDouble();

              avgScore = (score1 + score2 + score3) / 3;
              avgScore = console.nextInt();

              System.out.printf( "%s, your average test score is: %.1f",name,avgScore);

                return avgScore;
              }
         }

            public static void printLetter(double avgScore)
            {
                    Scanner console = new Scanner(System.in);
                    char grade;

                 if (avgScore >= 90)
                 {
                      grade = 'A';
                  }
                  else if (avgScore >= 80)
                  {
                     grade = 'B';
                  }
                  else if (avgScore >= 70)
                  {
                     grade = 'C';
                  }
                  else if (avgScore >= 60)
                  {
                     grade = 'D';
                  }
                  else
                  {
                     grade = 'F';
                 }

                    System.out.println("With that average, your grade is: " + grade);

       }
    }

Ответы [ 5 ]

0 голосов
/ 18 апреля 2020

В вашей программе несколько ошибок.

Я исправил программу с комментариями:

import java.util.*;
public class LetterGrade
{
    public static void main(String args[]) 
    {

        double avgScore=  calculateAvg();
        printLetter(avgScore); //pass variable name here not datatype


    }
    public static double calculateAvg() //must have return type
    {      
        Scanner console = new Scanner(System.in);
        double avgScore; 

        // for (double i = 0; i 0; i++) 
        //{
        System.out.println("Enter your full name.");
        String name = console.nextLine();
        System.out.println("Enter test score 1");
        double score1 = console.nextDouble();
        System.out.println("Enter test score 2");
        double score2 = console.nextDouble();
        System.out.println("Enter test score 3");
        double score3 = console.nextDouble();

        avgScore = (score1 + score2 + score3) / 3;
        // avgScore = console.nextInt();

        System.out.printf( "%s, your average test score is: %.1f",name,avgScore);

        return avgScore;
        // }
    }

    public static void printLetter(double avgScore)
    {
        //Scanner console = new Scanner(System.in);
        char grade;

        if (avgScore >= 90)
        {
            grade = 'A';
        }
        else if (avgScore >= 80)
        {
            grade = 'B';
        }
        else if (avgScore >= 70)
        {
            grade = 'C';
        }
        else if (avgScore >= 60)
        {
            grade = 'D';
        }
        else
        {
            grade = 'F';
        }

        System.out.println("With that average, your grade is: " + grade);

    }
}

ВЫХОД:
Введите ваше полное имя. manisha Введите тестовый балл 1 12 Введите тестовый балл 2 14 Введите тестовый балл 3 15 manisha, ваш средний балл по тесту: 13.7Средним значением ваш балл: F

0 голосов
/ 18 апреля 2020

Попробуйте изменить основной метод следующим образом:

public static void main(String args[]) {
    double avgScore = calculateAvg();
    printLetter(avgScore);
}
0 голосов
/ 18 апреля 2020

Есть некоторые комментарии, которые, я надеюсь, будут полезны для вас: 1- измените код в основном методе так, чтобы он был таким double avgScore = calculateAvg(); printLetter(avgScore); 2- проверьте использование для l oop (может быть, вам нужно сделать в то время как l oop) 3 - удалить сканер в методе "printLetter" 4 - также, как @NiklasLehnfeld предлагает удалить avgscore = console.nextInt();

0 голосов
/ 18 апреля 2020

Вы сделали много ошибок.

В основном методе вы должны сохранить вычисленное среднее значение в переменную и передать его методу printLetter следующим образом

double avgScore = calculateAvg();
printLetter(avgScore);

Тип возврата метода calculateAvg должен быть double поэтому вы должны объявить это следующим образом

public static double calculateAvg()

Кроме того, для l oop внутри calculateAvg неправильно и не нужно, поэтому просто удалите его. И присвоение scanner.nextInt() значения avgScore отбрасывает правильно рассчитанное значение. поэтому метод calculateAvg должен быть таким:

Метод printLetter является правильным, но содержит ненужные строки, такие как

Scanner console = new Scanner(System.in); //Could be removed

В результате получается код

import java.util.*;

public class LetterGrade
{
    public static void main(String args[])
    {
        double avgScore = calculateAvg();
        printLetter(avgScore);
    }

    public static double calculateAvg()
    {
        Scanner console = new Scanner(System.in);
        double avgScore;

        System.out.println("Enter your full name.");
        String name = console.nextLine();
        System.out.println("Enter test score 1");
        double score1 = console.nextDouble();
        System.out.println("Enter test score 2");
        double score2 = console.nextDouble();
        System.out.println("Enter test score 3");
        double score3 = console.nextDouble();

        avgScore = (score1 + score2 + score3) / 3;

        System.out.printf( "%s, your average test score is: %.1f\n", name, avgScore);

        return avgScore;
    }

    public static void printLetter(double avgScore)
    {
        char grade;

        if (avgScore >= 90)
        {
            grade = 'A';
        }
        else if (avgScore >= 80)
        {
            grade = 'B';
        }
        else if (avgScore >= 70)
        {
            grade = 'C';
        }
        else if (avgScore >= 60)
        {
            grade = 'D';
        }
        else
        {
            grade = 'F';
        }

        System.out.println("With that average, your grade is: " + grade);
    }
}
0 голосов
/ 18 апреля 2020

Оформите вашу функцию main. Вы должны правильно присвоить переменную возвращаемому значению метода calculateAvg. Попробуйте это:

public static void main(String args[]) {

    double avgScore = calculateAvg();
    printLetter(avgScore);

}

Также обратите внимание: double - это тип переменной, а не имя. Вы должны указать имя в методе printLetter().

Еще одна проблема, которую я только что обнаружил, - это двойное присвоение переменной avgScore, которое есть в вашем методе calculateAvg(). Удалите эту строку:

avgScore = console.nextInt();

Это заставит пользователя снова ввести значение, которое затем будет присвоено переменной avgScore. Это не обязательно.

...