首页 > 解决方案 > 如何同时应用 Scanner 和多个对象?- 新手

问题描述

我怎样才能满足这里的所有条件?在网上找不到任何示例。我只是不知道要使用什么代码。我尝试进行一些编码,但我知道这与实际要求我的内容相去甚远。问题是

“编写一个名为 Student 的 java 类。Student 类将有四个数据成员:name(字符串)、age(一个 int)、semesterNo(一个 int)和 GPA(一个 float)。编写一个 java 程序来测试您的 Student 类. 您的程序应该: 创建三个 Student 对象,输入他们的姓名、年龄、semesterNo(假设值从 1 到 8)和 GPA(假设值从 0.0 到 4.0)并显示每个 Student 的数据。继续 Student 类,计算并显示三个学生的平均 GPA。(需要用户输入)"

我想出的代码是`

import java.util.Scanner;

class Student {

  public static void main(String[] args) {
    
    String name, name1, name2;
    int age1, age2, age3, semesterNo1, semesterNo2, semesterNo3;
    float GPA1, GPA2, GPA3, Average;
  
    
   Scanner in = new Scanner(System.in);        
    System.out.print("Name:");
    name = in.nextLine();
    System.out.print("Age:");
    age1 = in.nextInt();
    System.out.print("Semester:");
    semesterNo1 = in.nextInt(9);
    System.out.println("GPA:");
    GPA1 = in.nextFloat(); 
   
   Scanner input = new Scanner(System.in);
    System.out.print("Name:");
    name1 = input.nextLine();
    System.out.print("Age:");
    age2 = input.nextInt();
    System.out.print("Semester:");
    semesterNo2 = input.nextInt(9);
    System.out.println("GPA:");
    GPA2 = input.nextFloat(); 
    
    Scanner inputs = new Scanner(System.in);
    System.out.print("Name:");
    name2 = inputs.nextLine();
    System.out.print("Age:");
    age3 = inputs.nextInt();
    System.out.print("Semester:");
    semesterNo3 = inputs.nextInt(9);
    System.out.println("GPA:");
    GPA3 = inputs.nextFloat(); 
    
   Average = (GPA1 + GPA2 + GPA2) / 3;
   System.out.println("Average GPA:" + Average); 

  }

}

`

标签: oopjava.util.scannerabstraction

解决方案


根据您的问题,您应该创建一个学生类的对象。所以学生类应该包含

class Student {
   // data members
    String name;
    int age, semester number;
    float GPA;
    
}

从 main 方法中,您应该创建学生类的对象,例如:

Student std1 = new Student();
Student std2 = new Student();
Student std2 = new Student();

现在您可以访问每个对象的数据成员,例如:

std1.name = "Some name"  // std1.name = in.nextLine();
std1.age = // some age
std1.GPA = // your GPA

您可以对每个对象执行相同的操作。使用适当的方式从扫描仪对象中获取输入,并如上所示存储它。

最后计算GPA并显示:)

[已编辑] 简单示例:

// import Scanner class for console base input
import java.util.Scanner;

// your student class
class Student {
    // data members
    String name;
    int age;
    float GPA;
    

    // display method 
    void display() {
        System.out.println("Your name: "+this.name);
        System.out.println("Your age: "+this.age);
        System.out.println("Your GPA: "+this.GPA+"\n");
    }
}

// class which contain main method (enty point)
class StudentInfo {
    public static void main(String[] args) {
        // create object of scnner 
        Scanner in = new Scanner(System.in);

        // create three different object of student
        Student std1 = new Student();
        Student std2 = new Student();
        Student std3 = new Student();

        // new set data for student
        System.out.println("Enter name, age and GPA of student:");

        //for first student
        std1.name = in.next();
        std1.age = in.nextInt();
        std1.GPA = in.nextFloat();

        // for second student
        System.out.println("Enter name, age and GPA of student:");
        std2.name = in.next();
        std2.age = in.nextInt();
        std2.GPA = in.nextFloat();

        // for third student
        System.out.println("Enter name, age and GPA of student:");
        std3.name = in.next();
        std3.age = in.nextInt();
        std3.GPA = in.nextFloat();

        // display info of each student
        std1.display();
        std2.display();
        std3.display();

        // now calculate Average GPA and display
        float avg = (std1.GPA + std2.GPA + std3.GPA)/3;
        System.out.println("Average GPA: "+ avg);


    }
}

推荐阅读