【问题标题】:Need to generate roll no for each student from the user?需要为用户的每个学生生成卷号吗?
【发布时间】:2018-11-15 16:06:30
【问题描述】:

我需要从每个学生那里获得唯一的卷号。

package test;

import java.util.Scanner;

public class Studentform {

    public static void main(String[] args) {

        int length = 3;

        Studb[] studs = new Studb[length];

        for (int i = 0; i < length; i++) {
            for (Studb s : studs) {
                readStudent(i);

            }
        }

    }

    static void readStudent(int i) {
        int rollno = 1001;
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter your name:");
        String name = sc.next();
        System.out.println("Enter your age:");
        int age = sc.nextInt();
        Studb stud = new Studb(name, age, rollno++);
        System.out.println(stud);

    }
}

【问题讨论】:

  • 生成的方式有很多种——AtomicInteger、UUID等,如果是int,可以使用AtomicInteger
  • 你已经在循环使用 int i ,你已经传入了它。只需使用它,它最终会是独一无二的。
  • 我只想打印具有唯一卷号的扫描值
  • 为什么会有多余的 for 循环?

标签: java arrays function class object


【解决方案1】:

只需传递它,它最终也会是独一无二的。如下:

static void readStudent(int i) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter your name:");
        String name = sc.next();
        System.out.println("Enter your age:");
        int age = sc.nextInt();
        Studb stud = new Studb(name, age, i);
        System.out.println(stud);

    }

或者您可以在 rollno 中添加 i 值,如下所示:

static void readStudent(int i) {
        int rollno = 1000+i;
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter your name:");
        String name = sc.next();
        System.out.println("Enter your age:");
        int age = sc.nextInt();
        Studb stud = new Studb(name, age, rollno);
        System.out.println(stud);

    }

【讨论】:

  • 是的,但循环只运行一次。但我需要根据长度运行所有值
  • 内容未循环存储
【解决方案2】:
    package test;

    import java.util.Scanner;

    public class Studentform {

        public static void main(String[] args) {

            int length = 3;

            Studb[] studs = new Studb[length];

            for (int i = 0; i < length; i++) {

                studs[i] = readStudent(i);

            }

            for (int i = 0; i < length; i++) {

                System.out.println(studs[i]);

            }

        }

        static Studb readStudent(int i) {
            int rollno = 1000+i++;
            Scanner sc = new Scanner(System.in);
            System.out.println("Enter your name:");
            String name = sc.next();
            System.out.println("Enter your age:");
            int age = sc.nextInt();
            return new Studb(name, age, rollno);
            //System.out.println(stud);
            //return stud;
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 2016-05-27
    • 2013-03-14
    • 2014-04-06
    • 2018-12-08
    • 2014-03-17
    • 2023-03-24
    相关资源
    最近更新 更多