Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么赢了';我的数组不能传递给另一个类吗?_Java_Arrays - Fatal编程技术网

Java 为什么赢了';我的数组不能传递给另一个类吗?

Java 为什么赢了';我的数组不能传递给另一个类吗?,java,arrays,Java,Arrays,我看过类似的例子或其他从另一个类调用数组的程序,看起来我的方法是正确的,但仍然有错误。 这是存储阵列的位置: import java.util.Scanner; public class DriverProgram { public static int[] IDs = new int[10]; public static String[] names = new String[10]; public static double[] grades = new double

我看过类似的例子或其他从另一个类调用数组的程序,看起来我的方法是正确的,但仍然有错误。 这是存储阵列的位置:

import java.util.Scanner;
public class DriverProgram {
    public static int[] IDs = new int[10];
    public static String[] names = new String[10];
    public static double[] grades = new double[10];
    public static int i = 0;
    static Student call = new Student();
    public static void main(String[] args){
        call = new Student();
        Scanner command = new Scanner(System.in);
        System.out.println("Please Enter a command(i, r, s, or d): ");
        while(command.hasNext()){
            char command1 = command.next().charAt(0);
            if(command1 == 'i'){
                call.AddToArray(IDs[], names[] , grades[], i);
            }else if(command1 == 'r'){
                call.RemoveFromArray(int [] IDs, String [] names,double [] grades, int i);
            }else if(command1 == 's'){
                call.SortArray(int [] IDs, String [] names,double [] grades, int i);
            }else if(command1 == 'd'){
                call.DisplayArray(int [] IDs, String [] names,double [] grades, int i);
            }else if(command1 == 'z') {
            break;
            }
            else System.out.println("Invalid command enter a valid command next time.");
            System.out.println("Please Enter a command(i, r, s, or d) or z to finish: ");
        }
    }
这就是我试图调用数组的目的:

import java.util.Scanner;
public class Student {

    public static void AddToArray(int[] IDs, String[] names, double[] grades, int i) {

        if (i >= 10) {
            System.out.println("You have already inputted 10 students please delete one first.");
        } else {
            Scanner readin = new Scanner(System.in);
            Scanner readinname = new Scanner(System.in);
            Scanner readingrade = new Scanner(System.in);
            System.out.println("Please enter student ID: ");
            IDs[i] = readin.nextInt();
            System.out.println("Please enter student name: ");
            names[i] = readinname.nextLine();
            System.out.println("Please enter student grade: ");
            grades[i] = readingrade.nextDouble();
            System.out.println(IDs[i] + " " + names[i] + " " + grades[i]);
            i++;
            for (int j = 0; j < i; j++) {
                if (IDs[j] == IDs[i]) {
                    System.out.println("This student has already been entered.");
                }else{
                    System.out.println("The student has been added");
                    break;
                }

            }
        }
    }
import java.util.Scanner;
公立班学生{
公共静态void AddToArray(int[]ID、字符串[]名称、双[]等级、int i){
如果(i>=10){
System.out.println(“您已经输入了10名学生,请先删除一名”);
}否则{
扫描仪读数=新扫描仪(System.in);
扫描仪readinname=新扫描仪(System.in);
Scanner readingrade=新扫描仪(System.in);
System.out.println(“请输入学生ID:”);
IDs[i]=readin.nextInt();
System.out.println(“请输入学生姓名:”);
名称[i]=readinname.nextLine();
System.out.println(“请输入学生成绩:”);
等级[i]=readingrade.nextDouble();
System.out.println(id[i]+“”+名称[i]+“”+等级[i]);
i++;
对于(int j=0;j
我不确定调用这些数组还需要什么或缺少什么

call.AddToArray(IDs[], names[] , grades[], i);
应替换为

call.AddToArray(IDs, names , grades, i);
p.S.设计说明

  • Student
    只有
    静态
    方法,因此这是实用类,不允许创建实例
  • call.AddToArray()
    和其他
    static
    方法应被称为
    Student.AddToArray()
  • 数组
    不是可以添加或删除元素的正确数据结构。有更合适的数据结构,如
    列表
    映射
  • 最好只使用一个
    Scanner
    实例

这就是
DriverProgram
的外观

public class DriverProgram {

    public static void main(String[] args) {
        Map<Integer, Student> students = new HashMap<>();
        Scanner scan = new Scanner(System.in);

        while (scan.hasNext()) {
            System.out.println("Please Enter a command [1-5]:");
            System.out.println("1. add new student");
            System.out.println("2. remove existed student");
            System.out.println("3. sort existed students by grades desc");
            System.out.println("4. show existed students");
            System.out.println("5. exit");
            System.out.print("> ");

            int menu = scan.nextInt();

            if (menu == 1)
                addStudent(scan, students);
            else if (menu == 2)
                removeStudent(scan, students);
            else if (menu == 3)
                sortStudents(students);
            else if (menu == 4)
                showStudents(students);
            else if (menu == 5)
                break;

            System.err.println("Unknown command. Try again");
        }
    }

    private static void addStudent(Scanner scan, Map<Integer, Student> students) {
        if (students.size() == 10) {
            System.err.println("You have already inputted 10 students please delete one first.");
            return;
        }

        System.out.print("Please enter student ID: ");
        int id = scan.nextInt();

        if (students.containsKey(id)) {
            System.err.println("This student with this id has already been entered.");
            return;
        }

        System.out.print("Please enter student name: ");
        String name = scan.nextLine();

        System.out.print("Please enter student grade: ");
        double grade = scan.nextDouble();

        students.put(id, new Student(id, name, grade));
    }

    private static void removeStudent(Scanner scan, Map<Integer, Student> students) {
    }

    private static void sortStudents(Map<Integer, Student> students) {
    }

    private static void showStudents(Map<Integer, Student> students) {
    }

    public static final class Student {

        private final int id;
        private final String name;
        private final double grade;

        public Student(int id, String name, double grade) {
            this.id = id;
            this.name = name;
            this.grade = grade;
        }

    }

}
公共类驱动程序{
公共静态void main(字符串[]args){
Map students=newhashmap();
扫描仪扫描=新扫描仪(System.in);
while(scan.hasNext()){
System.out.println(“请输入命令[1-5]:”;
System.out.println(“1.添加新学生”);
System.out.println(“2.删除现有学生”);
System.out.println(“3.按年级分类描述”);
System.out.println(“4.显示现有学生”);
System.out.println(“5.exit”);
系统输出打印(“>”);
int menu=scan.nextInt();
如果(菜单==1)
添加学生(扫描,学生);
否则如果(菜单==2)
移除学生(扫描,学生);
否则如果(菜单==3)
SORTS学生(学生);
else if(菜单==4)
展示学生(学生);
否则如果(菜单==5)
打破
System.err.println(“未知命令。请重试”);
}
}
学生专用静态图像(扫描仪扫描、地图学生){
如果(students.size()==10){
System.err.println(“您已经输入了10名学生,请先删除一名”);
返回;
}
系统输出打印(“请输入学生ID:”);
int id=scan.nextInt();
if(学生姓名(id)){
System.err.println(“已输入此id的学生”);
返回;
}
系统输出打印(“请输入学生姓名:”);
字符串名称=scan.nextLine();
系统输出打印(“请输入学生成绩:”);
双级=scan.nextDouble();
学生。输入(id,新学生(id,姓名,年级));
}
私人静态空洞移除学员(扫描仪扫描、地图学员){
}
私人静态无效排序学生(地图学生){
}
私人静态学生(地图学生){
}
公共静态期末班学生{
私有最终int id;
私有最终字符串名;
私人期末双年级;
公立学生(整数id,字符串名称,双年级){
this.id=id;
this.name=名称;
这个。等级=等级;
}
}
}