Добавление точек и кривой оценок в массив оценок - PullRequest
1 голос
/ 01 мая 2020

Я не могу понять, как вывести кривую оценок и добавленные баллы, переходящие от методов к операторам печати. Я продолжаю получать ошибки форматирования Java. Я спросил своего профессора, и он не дает мне никаких истинных советов, чтобы это исправить.

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;


public class GradeReview 
{
  public static void main(String[] args) throws FileNotFoundException
  {
     String nameOfFile;

  Scanner input = new Scanner(System.in);
  System.out.print("Enter name of the file: ");
  nameOfFile = input.nextLine();

  try 
  {
   input = new Scanner(new File(nameOfFile));
  } catch (FileNotFoundException e) 
  {
   System.err.println(" File not found.");
   System.exit(0);
  }

  int size = 0;

  while(input.hasNextLine())
  {
   input.nextLine();
   size++;
  }

  input.close();
  input = new Scanner(new File(nameOfFile));


  double[] score = new double[size];
  while(input.hasNextLine())
  {
input.nextLine();
 }


  input.close();


  double number = 0;
  double addScore = 0;


    //Array of grades 
    double[] gradeScore = new double[] {87.5, 47.9, 70.0, 91.6, 67.8, 83.3, 75.0, 96.0, 55.0,
      96.0, 54.7, 73.7, 60.0, 64.0 };




    //Output for lowest, highest, and average grades 
    System.out.println();
    System.out.println("Grade Summary");
    System.out.println();
    System.out.printf("Lowest Score: " + GetLowest(gradeScore));  
    System.out.println();
    System.out.println();
    System.out.println("Highest Score: " + GetHighest(gradeScore));
    System.out.println();
    System.out.printf("Average Score: %,.1f", + GetAverage(gradeScore));
    System.out.println();
    System.out.println();
    System.out.printf("Curve grade: %,.1f", GetCurve(gradeScore, number));
    System.out.printf("Added Points: %,.1f", GetPoints(gradeScore, addScore));

     //Set variables to get the number of each grade
     int gradeA = 0;
     int gradeB = 0;
     int gradeC = 0; 
     int gradeD = 0;
     int gradeF = 0;


           for (int i = 0; i < gradeScore.length; i++)
           {
          //Begin if statement for finding number of each grade 
            if (gradeScore[i] >= 90.0)
            {
             gradeA++;
            }
            if (gradeScore[i] >= 80.0 && gradeScore[i] <= 90.0)
           {
             gradeB++;
           } 
            if(gradeScore[i] >= 70.0 && gradeScore[i] <= 80.0)
           {
             gradeC++; 
           }
            if(gradeScore[i] >= 60.0 && gradeScore[i] <= 70.0)
           {
             gradeD++; 
           }
            if(gradeScore[i] < 60.0)
           {
             gradeF++; 
           }

           }//End if statement and for loop

    //Output of how many students got each grade        
    System.out.println("Grade A:  " + gradeA);
    System.out.println("Grade B:  " + gradeB);
    System.out.println("Grade C:  " + gradeC);
    System.out.println("Grade D:  " + gradeD);
    System.out.println("Grade F:  " + gradeF);  

}


    //Method for finding the lowest grade in the array
    public static double GetLowest(double[] myArray) 
    {

 double lowest = myArray[0];

 for (int i = 1; i < myArray.length; i++)
 {
   if (myArray [i] < lowest)
   {
     lowest = myArray [i];

   }
 }
 return lowest;
  }
   //End of lowest method


    //Method for finding the highest grade in the array
    public static double GetHighest(double[] myArray) 
    {

 double highest = myArray[0];

 for (int i = 1; i < myArray.length; i++)
 {
   if (myArray [i] > highest)
   {
     highest = myArray [i];

   }
 }
 return highest;
  }
   //End of highest method


   //Method for finding the average grade in the array 
   public static double GetAverage (double[] myArray)
   {
     double total = 0;

    for (int i = 0; i< myArray.length; i++)
    {
      total = total + myArray[i];
    }

    double average = total / myArray.length;


    return average;
   }
    //End of average method


   public static double[] GetCurve(double[] myArray, double curve) 
   {

  double []number = new double[myArray.length];
  for (int i = 1; i < myArray.length; i++)
  {
    number[i] = myArray[i] * 1.05;
  }

  return number;

 }

 public static double[] GetPoints(double[]score, double points) 
 {
  double [] addScore = new double [score.length];
  for( int i = 1; i < score.length; i++)
  {
   addScore[i] = score[i] + points;
  }

  return addScore;
 }










  } 

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Хорошо, здесь есть пара неправильных вещей. Я попытаюсь указать на лучшее, что я могу.

Условная проверка

int i = 0;

//This works but it's an important logic concern to notice.
if ( i <= 1 ) { //Do Something }
else if ( i >= 1 ) { //Do Something }

//This does the exact same thing as above
if ( i <= 1 ) { //Do Something }
else if (i > 1 ) { //Do Something }

Причина, по которой он делает то же самое, заключается в том, что условные выражения проверяются сверху вниз на 99% всех языков. Это означает, что если вы введете 1, то первое условие ВСЕГДА вернет true. Однако; если это 2, то второе условное выражение вернет true. Обратите внимание, что в этом блоке кода второе условное else if НИКОГДА не вернет true для 1, поскольку оно проверяется и возвращается в первом условном выражении.

Возвращение значений из массивов

double[] curve = new double[] ( 1.0, 2.0, 3.0 );

for (int i = 0; i < curve.Length; i++)
{
    System.out.println("Curve Element: " + curve[i]);
}

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

forLoopsFTW ()

for (int value : intArray) { //Do something with value }
for (i = 0; i < someLength; i++) { //Do something like someLength[i] }

Это два распространенных способа l oop через коллекции (массивы). В настоящее время вы используете что-то вроде (i = 1; i < someNumber; i++), что означает, что вы будете пропускать первый элемент каждый раз.

ВСЕГДА l oop с использованием индексации на основе 0. Позже вы узнаете, что существуют тонны встроенных методов, которые начинаются с 0, и если вы не получите gr asp на ранней стадии, вы очень быстро узнаете, что Index out of bounds ошибки есть.

0 голосов
/ 01 мая 2020

Ваши методы GetCurve и GetPoints возвращают массивы, но вы пытаетесь напечатать отдельные значения. Если они должны возвращать массивы, то вы должны обернуть свои операторы печати в циклы. Кроме того, во всем коде убедитесь, что массивы проиндексированы от 0 до array.length-1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...