Как рассчитать среднее по каждому предмету - PullRequest
0 голосов
/ 10 октября 2018

Как рассчитать среднее значение по каждому предмету и среднее значение по общей стоимости 3 предметов и среднее значение в процентах и ​​распечатать их под таблицей.

Я попытался найти среднее значение, разделив каждый массив на числопеременной студентов "DB", но она выдает ошибку

"Оператор / не определен для типов аргументов int, int [] []".

И есть ли способ, которым я могу получить идеальную структуру таблицы для вывода.

Я использую \t, чтобы создать пространство между столбцами, но они не выравниваются должным образом.

package cube;
  import java.io.*;
import java.util.Scanner;
  public class ReportCard
  {
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    int DB[][],nos=0; 
    String S="";
    Scanner s = new Scanner(System.in);
    void Input()throws Exception
    {
      System.out.print("Enter The Number Of Students : ");
      nos=Integer.parseInt(br.readLine());
      DB=new int[nos+1][20];
      String arrayOfNames[] = new String[nos];
        for (int i = 0; i < arrayOfNames.length; i++) {
            System.out.print("Enter the name of student:");
                arrayOfNames[i] = s.nextLine();


        System.out.print("\nEnter "+arrayOfNames[i]+"'s English   Score : ");
        DB[i][0]=Integer.parseInt(br.readLine());
        System.out.print("Enter "+arrayOfNames[i]+"'s Science Score : ");
        DB[i][1]=Integer.parseInt(br.readLine());
        System.out.print("Enter "+arrayOfNames[i]+"'s Maths  Score : ");
        DB[i][2]=Integer.parseInt(br.readLine());
        DB[i][3]=(int)(DB[i][0]+DB[i][1]+DB[i][2]);

        DB[i][4]=((int)((DB[i][3])*100)/300);

        DB[i][5]=(int)(DB[i][0])/DB;

        Padd("Average\t",DB[i][5]);

         if ((DB[i][0])< 50 | (DB[i][1])< 50 | (DB[i][2]) < 50) {

            System.out.print("Fail");
           }
        else {
            System.out.print("Pass");
        }
        }




      System.out.println("\n\n\nStudent Name.  English     Science  \t Maths    Total   Percentage     Pass or Fail \n");
      for(int i=0;i<nos;i++)
      {
          System.out.print(""+arrayOfNames[i]+"\t\t");Padd("English  \t ",DB[i][0]);Padd("Science  \t ",DB[i][1]);
        Padd("Maths  \t ",DB[i][2]);Padd("Total \t",DB[i][3]);Padd("Percentage\t",DB[i][4]);

if ((DB[i][0])< 50 | (DB[i][1])< 50 | (DB[i][2]) < 50) {

            System.out.print("\t\tFail");
           }
        else {
            System.out.print("\t\tPass");
        }

        System.out.println(S);

        S="";
      }

    }
    void Padd(String S,int n)
    {
      int N=n,Pad=0,size=S.length();
      while(n!=0)
      {
        n/=10;
        Pad++;
      }
      System.out.print("    "+N);
      for(int i=0;i<size-Pad-4;i++)
        System.out.print(" ");
          }


    public static void main(String args[])throws Exception
    {
      ReportCard obj=new ReportCard();
      obj.Input();

    }
  }

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Эта ошибка появляется при выполнении арифметических операций над самим объектом массива.

Массив в java - это структура данных для хранения последовательного набора значений / объектов.Вы можете выполнять арифметические операции над элементами массива, обращаясь к ним с помощью индекса.

Как показано ниже: int result = array [i] [0] / 3;

Но в вашем коде выпередают весь массив как операнд в выражении.

DB[i][5]=(int)(DB[i][0])/DB;

Приведенная выше строка кода вызывает проблему.Вместо предоставления какого-либо целого массива БД, предоставьте соответствующий ему индекс в соответствии с вашими требованиями

Надеюсь, это ответит на ваш вопрос

0 голосов
/ 10 октября 2018

Ваша проблема в этом разделе кода

DB[i][5]=(int)(DB[i][0])/DB;
Padd("Average\t",DB[i][5]);
if ((DB[i][0])< 50 | (DB[i][1])< 50 | (DB[i][2]) < 50) {
  System.out.print("Fail");
}
else {
  System.out.print("Pass");
}

Из того, что я могу понять из вашего кода, индекс 5 не нужен.Вы уже сохранили среднее в индексе массива 4 (DB [i] [4]).

В любом случае разделение незаконно.Int не может быть разделен на массив.Возможно, вы имеете в виду длину БД (DB.length)

...