2016-02-27 56 views
1
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; 
} 

錯誤:Java的返回從陣列的方法數組的主要功能

students[ i ] = inputStudent(i+1); 

它說:

incompatible types: String[] cannot be converted to String 

PS: 主要功能不應該被修改。

+1

你能解釋一下inputStudent函數的用途嗎?它不應該返回一組學生,它應該讀一個學生,並只是返回它。 – PyThon

回答

0

你可以做的做的是改變:

students[ i ] = inputStudent(i+1); 

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

由於students是一個字符串,你無法直接將數組分配到String。通過使用Array.toString(),它將返回數組內容的表示形式,作爲String值。

再看看你的問題,你無法修改主要。在這種情況下,我們可以將inputStudent設置爲返回String類型。

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 Arrays.toString(studentNum); 
} 

或短而甜。

public static String inputStudent(final int id) 
{ 
    System.out.print("Enter student name at ID: "+id+": "); 
    return new Scanner(System.in).next(); 
} 
1

您正在試圖String數組分配給字符串

inputStudent(int i) 返回數組,但您要指定數組到students[ i ] = inputStudent(i+1); 作爲 字符串[i]是元素字符串數組只接受字符串

+0

誰是downvoter? – Pragnani

-1

您的代碼有錯誤。 For循環主要不需要

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; 
} 
1

將您的方法更改爲此。您無法將字符串數組分配給字符串。另外,你爲什麼要循環使用你的方法?如果我理解正確,你想添加n個學生到學生數組?你在每個學生的主循環和方法循環中循環。

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

修改您的輸入學生方法,使其僅返回一名學生。

public static String inputStudent(int i) { 
    String studentNam = null; 
    System.out.print("Enter student name"+i+": "); 
    studentNum=new Scanner(System.in).nextLine(); 
    return studentNum; 
} 
+0

你真的需要在這個函數中讀'n'個學生嗎?爲什麼這樣? – PyThon

+0

如果他不能修改main,那麼他不能從inputStudent返回一個String [],所以必須改變它。 – pczeus

+0

仍然不會用這種方法修改主要方法。我猜他在這兩種方法中都有錯誤的邏輯。只有一個方法應該有一個for循環裏面。 – PyThon

0

既然你規定的主要功能不能被修改,你將不得不從的String []更改inputStudent函數的返回類型爲String。這意味着你必須改變你在這個函數中存儲數據的方式。

因此,將字符串studentNum []更改爲字符串studentNum,而不是爲數組的每個索引要求新的用戶輸入,請求所有輸入一次逗號分隔並將它們存儲在studentNum中。

根據您的標準,這是一種可能的方法。

0

我明白你要實現什麼,下面的代碼會解決你的問題,每一行代碼都有解釋。

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 
}