java - 如何在java中获取类数组的输入?

标签 java

我是java新手,我正在尝试获取信息

五个学生并将他们保存到一系列类(class)中。我该怎么做?

我想为五个具有不同信息的学生使用类(class)人员

import java.io.IOException;
import java.util.*;

public class exam 
{
public static void main(String[] args)
   {
   Scanner s  = new Scanner(System.in);

// I want to get and save information in this array 
  person[] f  = new student[5];



   }    
}

为获取姓名定义的类 person。


import java.util.*;

 public abstract class person {
     Scanner scr  = new Scanner(System.in);

private String name , fname;

    public void SetName() {

        System.out.println("enter name and familyNAme :");
        name = scr.next();

    } 

    public String getname() {

        return name;
    }

    public void setfname () {
        System.out.println("enter familyname:");
        fname = scr.next();
    }
    public String getfname() {
        return fname;
    }
}

类 Student 继承自类 person,用于获取 StudentID 和 Student Scores 。

import java.util.*;

class student extends person {
float[] p = new float[5];
int id , sum  ;
float min;

public void inputs() {

    System.out.println("enter the id :");
    id = scr.nextInt();

}

public void sumation() {
    System.out.println("enter points of student:");
    sum= 0;
    for(int i = 0 ; i<5 ; i++){
        p[i]=scr.nextFloat();
        sum+=p[i];
    }
}

public void miangin() {

    min = (float)sum/4;
}

}

最佳答案

首先,在创建 Java 对象时,不要在对象内部获取输入,这样,如果您决定更改获取输入的方式(例如从命令行转换到 GUI),则无需修改 Java目的。

其次,getter 和 setter 只能获取或设置。这会在调试时避免一些困惑,因为我们不必检查这些方法/函数。

这是 person 对象:

public abstract class Person {

    protected String name, fname;

    public Person (String name, String fname) {
        this.name = name;
        this.fname = fname;
    }

    public void setName (String name) {
        this.name = name;
    }

    public String getName () {
        return name;
    }

    public void setFname (String fname) {
        this.fname = fname;
    }

    public String getFname () {
        return fname;
    }

}

这是学生对象(提示:您可以根据需要创建尽可能多的构造函数,以便更轻松地创建对象):

public class Student extends Person {

    private float[] p;
    private int id;

    public Student (String name, String fname) {
        this (name, fname, -1, null);
    }

    public Student (String name, String fname, int id, float[] p) {
        super (name, fname);
        this.id = id;
        this.p = p;
    } 

    public void setP (float[] p) {
        this.p = p;
    }

    public float[] getP () {
        return p;
    }

    public void setId (int id) {
        this.id = id;
    }

    public int getId () {
        return id;
    }

    public float summation () {
        float sum = 0;
        for (int i = 0; i < p.length; i++)
            sum += p[i];
        return sum;
    }

    public float miangin () {
        return summation () / 4.0f;
    }

    @Override
    public String toString () {
        return new StringBuilder ()
            .append ("Name: ").append (name)
            .append (" Family name: ").append (fname)
            .append (" Id: ").append (id)
            .append (" min: ").append (miangin ())
            .toString ();
    }

}

最后,无论您的主要方法在哪里,您都应该从中获取输入。请注意,当您创建数组时,每个索引都会初始化为 null,因此您仍然需要在使用之前实例化每个数组索引。我在下面制作了一个示例,但您可以根据需要进行修改。

import java.util.*;

public class Exam {

    Scanner sc;
    Person[] people;

    Exam () {
        sc = new Scanner (System.in);
        people = new Person[5];
    }

    public void getInput () {
        for (int i = 0; i < people.length; i++) {
            System.out.print ("Enter name: ");
            String name = sc.nextLine ();

            System.out.print ("Enter family name: ");
            String fname = sc.nextLine ();

            System.out.print ("Enter id: ");
            int id = sc.nextInt (); sc.nextLine ();

            System.out.println ("Enter points: ");
            float[] points = new float[5];
            for (int j = 0; j < points.length; j++) {
                System.out.printf ("[%d] ", j + 1);
                points[j] = sc.nextFloat (); sc.nextLine ();
            }

            people[i] = new Student (name, fname, id, points);
        }
    }

    public void printInput () {
        for (Person p: people)
            System.out.println (p);
    }

    public void run () {
        getInput ();

        printInput ();
    }

    public static void main (String[] args) {
        new Exam ().run ();
    }

}

最后一个提示,如果您需要 Java 中的动态数组,请查看 ArrayList .

关于java - 如何在java中获取类数组的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59501728/

相关文章:

java - 如何启用 github 操作以访问 secret 属性文件

java - 在Java游戏中播放小声音

java - Apache Wicket、OpenJPA 和 Spring/ROO

java - Android 二进制 xml 文件错误膨胀类/无法调用回收的实例

java - 如何在 java 中/使用命令行以编程方式签署 apk

java - 从 http 到 https

java - 如何从浏览器将列表(数组)参数传递给 Rest Ws

Java block Runtime.exec()?

Java - Zip 到文件目录问题

java - 排除带有 JPQL "not in"的项目