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=名称;
这个。等级=等级;
}
}
}