Java将数组从数组方法返回到主函数

Java将数组从数组方法返回到主函数,java,arrays,methods,return,Java,Arrays,Methods,Return,上面写着: public static public static void main(String[] args) { System.out.print("Enter the number of student names to input: "); int studentNum = new Scanner(System.in).nextInt(); String students[ ] = new String[studentNum]; for(int i =

上面写着:

public static public static void main(String[] args) {
    System.out.print("Enter the number of student names to input: ");
    int studentNum = new Scanner(System.in).nextInt();
    String students[ ] = new String[studentNum];
    for(int i = 0; i<studentNum; i++){
        students[ i ] = inputStudent(i+1);
    }
}

public static String[] inputStudent(int i) {
    String studentNum[] = new String[i];
    for(int a=0; a<i; a++) {
        System.out.print("Enter student name"+(a+1)+": ");
        studentNum[a]=new Scanner(System.in).nextLine();
    }
    return studentNum;
}
students[ i ] = inputStudent(i+1);
附言:
不应修改主功能。

您可以做的是更改:

incompatible types: String[] cannot be converted to String

由于
学生
是一个字符串,您无法将数组直接分配给
字符串
。通过使用
Array.toString()
它将以
字符串的形式返回数组内容的表示形式

再次查看您的问题,您无法修改主选项。在这种情况下,我们可以将inputStudent设置为返回
字符串
类型

students[ i ] = Arrays.toString(inputStudent(i + 1));

您正在尝试将字符串数组分配给字符串

i、 e

inputStudent(int i)
返回数组,但您正试图将数组分配给
学生[i]=inputStudent(i+1)
作为

字符串[i]是元素字符串数组,它只接受字符串

如果代码中有错误。主循环中不需要For循环

public static String inputStudent( final int id )
{
    System.out.print("Enter student name at ID: "+id+": ");
    return new Scanner( System.in ).next();
}
public static public static void main(字符串[]args){
System.out.print(“输入要输入的学生姓名数:”);
int studentNum=新扫描仪(System.in).nextInt();
字符串students[]=inputsudent(studentNum);
}
公共静态字符串[]inputStudent(int i){
String studentNum[]=新字符串[i];

对于(int a=0;a将您的方法更改为此。您不能将字符串数组分配给字符串。另外,为什么要在方法中循环?如果我理解正确,您希望将n个学生添加到学生数组中?您可以在主方法中循环,并为每个学生运行方法

public static public static void main(String[] args) {
    System.out.print("Enter the number of student names to input: ");
    int studentNum = new Scanner(System.in).nextInt();
    String students[ ] = inputStudent(studentNum);
}

public static String[] inputStudent(int i) {
    String studentNum[] = new String[i];
    for(int a=0; a<i; a++) {
        System.out.print("Enter student name"+(a+1)+": ");
        studentNum[a]=new Scanner(System.in).nextLine();
    }
    return studentNum;
}

修改输入学生方法,使其仅返回单个学生

public static String inputStudent(int i) {
        System.out.print("Enter student name");
        String studentName = new Scanner(System.in).nextLine();
        return studentName;
    }

由于您规定不能修改主函数,因此必须将inputStudent函数的返回类型从String[]更改为String。这意味着您必须更改在该函数中存储数据的方式

因此,将字符串studentNum[]更改为字符串studentNum,而不是为数组的每个索引请求新的用户输入,而是一次请求以逗号分隔的所有输入,并将它们存储在studentNum中


根据您的标准,这是一种可能的方法。

我了解您想要实现什么,下面的代码将解决您的问题,每行代码都有解释

public static String inputStudent(int i) {
    String studentNam = null;
    System.out.print("Enter student name"+i+": ");
    studentNum=new Scanner(System.in).nextLine();
    return studentNum;
}
publicstaticvoidmain(字符串[]args)引发异常{
System.out.print(“输入要输入的学生姓名数:”);
Scanner Scanner=新扫描仪(System.in);//获取扫描仪
int numOfStudents=scanner.nextInt();//从用户获取学生人数
String[]students=新字符串[numOfStudents];//创建字符串数组
int studentAdded=0;//计数器
scanner=new scanner(System.in);//重新创建扫描仪,否则将跳过第一个学生。
做{
System.out.println(“输入学生姓名”+(学生添加+1)+“:”;
String studentName=scanner.nextLine();//询问学生姓名
students[studentAdded]=studentName;//将学生名添加到数组中
studentAdded++;//将1添加到计数器
}while(studentAdded
你能解释一下inputStudent函数的用途吗?它不能返回student数组,它应该读取一个student并返回它。你真的需要在这个函数中读取n个student吗?为什么?如果他不能修改main,那么他就不能返回字符串[]从inputStudent,所以它必须被更改。主方法仍然不会用这种方式修改。我猜他在这两个方法中都放错了逻辑。只有一个方法内部应该有一个for循环。我同意Python…正在确认你的答案。还有一点,他不能在不修改的情况下返回该方法中的“n”个学生数g main:)
public static String inputStudent(int i) {
        System.out.print("Enter student name");
        String studentName = new Scanner(System.in).nextLine();
        return studentName;
    }
public static String inputStudent(int i) {
    String studentNam = null;
    System.out.print("Enter student name"+i+": ");
    studentNum=new Scanner(System.in).nextLine();
    return studentNum;
}
public static void main(String[] args) throws Exception {
    System.out.print("Enter the number of student names to input: ");
    Scanner scanner = new Scanner(System.in); // get the scanner
    int numOfStudents = scanner.nextInt();    // get the number of students from user
    String [] students = new String [numOfStudents];    // create an array of string
    int studentAdded = 0;   // counter
    scanner = new Scanner(System.in); // recreate the scanner, if not it will skip the first student.
    do {
        System.out.println("Enter student name "+(studentAdded+1)+": ");
        String studentName = scanner.nextLine();    // ask for student name
        students[studentAdded] = studentName;       // add student name to array
        studentAdded++;     // add 1 to the counter
    } while (studentAdded < numOfStudents); // loop until the counter become the same size as students number
    System.out.println("students = " + Arrays.toString(students)); // and show the result
}