1

学生データについてユーザーからの入力を取得しようとしています。まず、データを入力している学生の数をユーザーに尋ねます。次に、コードは、ユーザーが最初の質問で入力した正確な学生数に関するデータをユーザーに要求します。

以下は私のコードの始まりです。初期変数の後にユーザー入力を取得する際に問題が発生しています。ユーザーが を入力すると、その変数を取得する5必要があります。ユーザーに 5 回プロンプトを表示して、生徒の名前と成績を入力する必要があります。そのようです:

Student 1 last name:
Student 1 first name:
Student 1 grade:

Student 2 last name:

配列を使用する必要があります。ユーザー入力を適切に取得する方法を理解する必要があるだけです。

import java.util.Scanner;

public class StudentScoresApp {

    public static Score score = new Score();
    private static Student student;

    public static void main(String[] args) {
        System.out.println("Welcome to the Student Scores Application.\n");
        getStudentScores();
    }

    public static void getStudentScores() {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter number of students to enter:   ");
        int num = input.nextInt();
        int [] a = new int[num];
        for (int i = 0 ; i < num ; i++); {
            System.out.print("Enter Student " + (i + 1) + " last name:");
            a[i] = in.nextInt();
        }
    }
}
4

3 に答える 3

1

私の意見では、配列間の関連付けを処理するのは良い習慣ではありません。とにかく、設計を決定するのはあなた次第です。あなたがそれをしたいなら、@Mikhail Vladimirovの提案が道です。

一方、必要に応じてクラスを設計し、クラスのオブジェクトを配列またはリストに格納します。

public class StudentScore{
    String firstName;
    String lastName;
    int grade;

    pulbic StudnetScore(String firstName, String lastName, int grade){
        this.firstName = firstName;
        this.lastName = lastName;
        this.grade = grade;
    }

    //getters(), setters()
}

メインクラスでは:

StudentScore[] studentScores = new StudentScore[num];
for (int i = 0; i < studentScores.length; i++){
    System.out.print ("Enter Student " + (i + 1) + " last name:");
    String lastName = in.nextLine ();
    System.out.print ("Enter Student " + (i + 1) + " first name:");
    String firstName = in.nextLine ();
    System.out.print ("Enter Student " + (i + 1) + " grade:");
    int grade = in.nextInt ();
    studentScores[i] = new StudentScore(firstName,lastName,grade);
}
于 2013-03-02T16:53:48.627 に答える
1
String [] lastNames = new String [num];
String [] firstNames = new String [num];
int [] grades = new int [num];

for (int i = 0; i < num; i++)
{
    System.out.print ("Enter Student " + (i + 1) + " last name:");
    lastNames [i] = in.nextLine ();
    System.out.print ("Enter Student " + (i + 1) + " first name:");
    firstNames [i] = in.nextLine ();
    System.out.print ("Enter Student " + (i + 1) + " grade:");
    gradess [i] = in.nextInt ();
}
于 2013-03-02T16:31:18.937 に答える
0

学生オブジェクトを格納するには、arrayList を使用することをお勧めします。理解を深めるために、次の例を検討してください。

まず、getters() と setters() を使用して生徒の詳細を格納するモデル クラスを作成できます。次のようになります。

package com.stack.overflow.works.model;

public class Student {

    private String firstName;
    private String lastName;
    private int score;

    public Student() {}

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }
}

次に、以下に示すように StudentScoresApp を作成して、ユーザーからの入力を読み取ることができます。

package com.stack.overflow.works.main;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import com.stack.overflow.works.model.Student;

public class StudentScoresApp {

    public static List<Student> getStudentScores() {
        List<Student> students = new ArrayList<Student>();
        Student student = null;
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter number of students to enter: ");
        int numberOfStudents = scanner.nextInt();

        for (int i = 0; i < numberOfStudents; i++) {
            student = new Student();
            System.out.print("Enter Student " + (i + 1) + " First Name:");
            String firstName = scanner.next();
            student.setFirstName(firstName);
            System.out.print("Enter Student " + (i + 1) + " Last Name:");
            String lastName = scanner.next();
            student.setLastName(lastName);
            System.out.print("Enter Student " + (i + 1) + " Score:");
            int score = scanner.nextInt();
            student.setScore(score);
            students.add(student);
        }
        scanner.close();

        return students;
    }

    public static void displayStudentScores(List<Student> students) {
        int i = 1;
        for (Student student: students) {
            System.out.println("Student " + (i) + " First Name:" + student.getFirstName());
            System.out.println("Student " + (i) + " Last Name:" + student.getLastName());
            System.out.println("Student " + (i) + " Score:" + student.getScore());
            i++;
        }
    }

    public static void main(String[] args) {
        System.out.println("Welcome to the Student Scores Application");
        System.out.println("*****************************************");
        List<Student> students = StudentScoresApp.getStudentScores();
        System.out.println();
        System.out.println("Displaying Student Scores:");
        System.out.println("*************************");
        StudentScoresApp.displayStudentScores(students);
    }

}

これで、StudentScoresApp を実行できます。テスト結果の例を以下に示します。

Welcome to the Student Scores Application
*****************************************
Enter number of students to enter: 3
Enter Student 1 First Name:Sandeep
Enter Student 1 Last Name:Thulaseedharan
Enter Student 1 Score:100
Enter Student 2 First Name:Sathya
Enter Student 2 Last Name:Narayanan
Enter Student 2 Score:100
Enter Student 3 First Name:Jayakrishnan
Enter Student 3 Last Name:Lal
Enter Student 3 Score:100

Displaying Student Scores:
*************************
Student 1 First Name:Sandeep
Student 1 Last Name:Thulaseedharan
Student 1 Score:100
Student 2 First Name:Sathya
Student 2 Last Name:Narayanan
Student 2 Score:100
Student 3 First Name:Jayakrishnan
Student 3 Last Name:Lal
Student 3 Score:100

お役に立てれば..

ありがとう..幸せなコーディング...

于 2013-03-02T17:32:25.743 に答える