Array Java

时间:2016-05-16 06:31:29

标签: java arrays class

我正在开发一个Java项目,该项目请求用户输入信息,如名称,ID,数组中的得分。我需要帮助计算用户输入的平均成绩以及如何找出得分最高的人。这是我的代码:

package finalproject;
import java.util.Scanner;
/**
 *
 * @author vincephng
 */
public class FinalProject {

    /**
     * @param args the command line arguments
     */

    public static void main(String[] args) 
    {

        Scanner input= new Scanner(System.in);
        Cis84[] student= new Cis84[50];

        int option;

        for (int c = 0; c<50;c++)
        student[c]=new Cis84();

        do{
            System.out.print("");
            System.out.println("1) Add Information");
            System.out.println("2) Show report");
            System.out.println("3) Exit");
            System.out.print("\nEnter option: ");


            option = input.nextInt();

            switch(option)
            {
                case 1:
                    String n;

                    double g;
                    int index, i;

                    System.out.println("Which position of the student?");
                    index=input.nextInt();

                    System.out.println("What is the student's name:");
                    n=input.nextLine();
                    n=input.nextLine();

                    System.out.println("What is student's Id");
                    i=input.nextInt();


                    System.out.println("What is student's score");
                    g=input.nextDouble();

                    student[index].setName(n);
                    student[index].setGrade(g);
                    student[index].setId(i);
                    break;

                case 2:
                    for(int c=0; c<50;c++)
                    System.out.println(student[c]);
                    break;
                case 3:
                    System.out.println("You are done");
                    break;
                default:
                    System.out.println("Try again");
                    break;
            }

        }while (option != 3);



    }
}   

和班级

package finalproject;


public class Cis84 
{
    private String name;
    private int id;
    private double grade;

    public Cis84()
    {
        name="not input yet";
        id= 00000;
        grade= 0.0;
    }
    public Cis84(String n, int i, double g)
    {
       name= n;
       id= i;
       grade=g;
    }

    public void setName(String n)
    {
        name=n;
    }
    public void setId(int i)
    {
        id=i;
    }
    public void setGrade(double g)
    {
        grade=g;
    }

    public String getName()
    {
        return name;
    }
    public int getId()
    {
        return id;
    }
    public double getGrade()
    {
        return grade;
    }

    public String toString()
    {
        return String.format("%s\n%d\n%.2f\n", name, id, grade);
    }
}

4 个答案:

答案 0 :(得分:1)

你的toString方法没有被正确定义 - 它应该是toString,小写t,而不是你现在拥有的ToString。顺便说一句,这是为什么建议在覆盖超类时使用@Override注释&#39;方法。如果你犯了一个微不足道的错误(例如拼写错误,或像你在这里混淆的情况),编译器会提醒你你做错了什么,而不是仅仅允许你声明另一种方法,它本身没有任何问题,除了不是你想要覆盖的方法。

总结一下,以下是代码的外观:

@Override // override annotation
public String toString() { // correct method name
    return String.format("%s\n%d\n%.2f\n", name, id, grade);
}

答案 1 :(得分:1)

您的错误在这里:

你写了这个:

public String ToString() { 
    return String.format("%s\n%d\n%.2f\n", name, id, grade); 
}

那不是类对象的toString()方法..(注意名称的区别,java定义方法camelCase但是你做了PascalCase)

你的意思是

@Override
public String toString() { 
     return String.format("%s\n%d\n%.2f\n", name, id, grade); 
}

之后,您将能够看到student[c]

的内容

答案 2 :(得分:0)

您应该覆盖Cis84课程的for(Cis84 std: student){ System.out.println(std); } 方法。然后,您可以使用以下方法之一:

Arrays.deepToString(student);

OneClass

答案 3 :(得分:0)

取代

case 2:
                    for(int c=0; c<50;c++)
                    System.out.println(student[c]);
                    break;

试试这个:

case 2:
                    for(int c=0; c<50;c++)
                    System.out.println(student[c].getName()+" "+student[c].getId()+" "+student[c].getGrade());
                    break;

您正在打印对象,但实际上您需要该对象内的数据。