2014-05-23 19 views
-1

以下附上我的程序,基本上我的問題是,如果我輸入姓氏,讓我找到我要刪除我怎麼能輸入的字符串比較姓學生變量在數組中?用戶輸入的字符串比較給數組變量的Java

當我輸入姓氏和嘗試,並在陣列中已經比較這對條目,而不是比較姓氏它輸入的字符串比較一切都在它該實例中。這是在findStudent方法中完成的。

我想是因爲我傳遞整個數組這裏姓包含我爲學生(姓,名,考試分)進入一切。如果我嘗試傳遞姓氏參數,我會收到錯誤消息。

我已經搜查,看看這已經回答了,但所有我能找到的是一個輸入字符串比較已定義不是從用戶輸入創建一個數組的數組。 任何幫助,將不勝感激!

感謝

import java.util.Scanner; 

/** 
* 
* @author Connor 
*/ 
public class Student { 

    //declare student variables 
    private String surname; 
    private String forename; 
    private int mark1, mark2, mark3; 
    private double dblScore; 
    private static String course = "French"; 

    //constructor 
    //=========================================================== 
    // 
    // MODULE : Student 
    // RETURN TYPE : None 
    // PARAMETERS : args : String newForename, String newSurname, int newMark1, int newMark2, int newMark3 
    // DESCRIPTION : Construct Student object 
//============================================================ 
    public Student(String newForename, String newSurname, int newMark1, int newMark2, int newMark3) { 

     this.forename = newForename; 
     this.surname = newSurname; 
     this.mark1 = newMark1; 
     this.mark2 = newMark2; 
     this.mark3 = newMark3; 
     this.dblScore = (this.mark1 + this.mark2 + this.mark3)/3; 

    } 

//=========================================================== 
    // 
    // MODULE : getCourse 
    // RETURN TYPE : String course 
    // PARAMETERS : args : 
    // DESCRIPTION : get course name 
//============================================================ 
    public static String getCourse() { 
     return course; 
    } 

    //=========================================================== 
    // 
    // MODULE : setCourse 
    // RETURN TYPE : course 
    // PARAMETERS : args : 
    // DESCRIPTION : set course name 
//============================================================ 
    public static String setCourse(String newCourse) { 

     course = newCourse; 
     return course; 
    } 
    //display student details method 
    //=========================================================== 
    // 
    // MODULE : displaydetails 
    // RETURN TYPE : None 
    // PARAMETERS : args : [DEFAULT] 
    // DESCRIPTION : write out student details - 
    // name, course and exam marks 
//============================================================ 

    public void displaydetails() { 

     System.out.println(" "); 
     System.out.println("Student details - "); 
     System.out.println("Name - " + surname + " " + forename); 
     System.out.println("Course - " + course); 
     System.out.println("exam scores - " + mark1 + " " + mark2 + " " + mark3); 
     System.out.println("Overall score - " + dblScore); 
     System.out.println(" "); 

    } 


} 

class StudentMenu { 

    //=========================================================== 
    // 
    // MODULE : add student 
    // RETURN TYPE : None 
    // PARAMETERS : args : studentArray, numStudents 
    // DESCRIPTION : requests user input to add student to array. 
    // Upto 6 students can be entered 
//============================================================ 
    public static void addStudent(Student[] studentArray, int numStudents) { 

     String newSurname, newForename; 
     int newMark1, newMark2, newMark3; 

     Scanner input = new Scanner(System.in); 
     System.out.println("1. Add a student"); 
     System.out.println(" "); 
     System.out.println("Student surname - "); 
     newSurname = input.next(); 
     input.nextLine(); 
     System.out.println("Student forename - "); 
     newForename = input.next(); 
     input.nextLine(); 
     System.out.println("First exam mark - "); 
     newMark1 = input.nextInt(); 
     input.nextLine(); 
     System.out.println("Second exam mark - "); 
     newMark2 = input.nextInt(); 
     input.nextLine(); 
     System.out.println("Third exam mark - "); 
     newMark3 = input.nextInt(); 
     input.nextLine(); 
     studentArray[numStudents] = new Student(newSurname, newForename, newMark1, newMark2, newMark3); 
    } 

     //=========================================================== 
    // 
    // MODULE : find student 
    // RETURN TYPE : int position 
    // PARAMETERS : args : surname, delSurname, position 
    // DESCRIPTION : finds the position of the selected student 
    // in the array 
//============================================================ 
    public static void findStudent(Student[] surname,String delSurname, int position, int totalStudents) { 

     int index; 

     for (index = 0; index < totalStudents; index++) { 
//   if (surname[index].equals(delSurname)) { 
      if (surname[index].equals(delSurname)) { 
       position = index; 
      } else { 
       index++; 
      } 
     } 


    } 

    //=========================================================== 
    // 
    // MODULE : delete student 
    // RETURN TYPE : None 
    // PARAMETERS : args : myClass, position, NUM_STUDENTS 
    // DESCRIPTION : deletes chosen student from array. Moves 
    // all other entries down by one 
//============================================================ 
    public static void deleteStudent(Student[] myClass, int position, int NUM_STUDENTS) { 

     int index = 0; 

     for (index = position + 1; index < NUM_STUDENTS; index++) { 
      myClass[index - 1] = myClass[index]; 
     } 

    } 

    //=========================================================== 
    // 
    // MODULE : main method 
    // RETURN TYPE : None 
    // PARAMETERS : args : myClass, position, NUM_STUDENTS 
    // DESCRIPTION : runs menu program allowing user input 
    // to add/modify/delete student information 
//============================================================ 
    public static void main(String[] args) { 
     //declare scanner 
     Scanner input = new Scanner(System.in); 
     //declare variables 
     boolean menu = true; 
     int option; 
     int totalStudents = 0; 
     final int NUM_STUDENTS = 6; 
     int position = 0; 
     String delSurname, newCourse; 

     //array 
     Student[] myClass; 
     myClass = new Student[NUM_STUDENTS]; 

     //main method 
     //menu 
     while (menu != false) { 
      System.out.println("1. Add a student"); 
      System.out.println("2. Delete student"); 
      System.out.println("3. Display all students"); 
      System.out.println("4. Change course details"); 
      System.out.println("5. Search for student"); 
      System.out.println("6. Exit program"); 

      // enter choice 
      System.out.print("Please enter selection - "); 
      option = input.nextInt(); 
      System.out.println(" "); 
      // calling methods using switch 
      if ((option > 6) || (option < 1)) { 
       System.out.println("Invalid selection made - reenter. Between options 1-6 only."); 
      } else { 
       switch (option) { 
        case 1: 
         //option 1 - add student 
         addStudent(myClass, totalStudents); 
         totalStudents++; 
         break; 
        case 2: 
         //option 2 - delete student 
         System.out.println("Student surname to delete - "); 
         delSurname = input.next(); 
         input.nextLine(); 
         findStudent(myClass,delSurname, position, totalStudents); 
         if (position >= 0 && position < NUM_STUDENTS) { 
          deleteStudent(myClass, position, NUM_STUDENTS); 
         } 
         totalStudents--; 
         break; 
        case 3: 
         //option 3 - display details 
         Student.getCourse(); 
         for (int index = 0; index < totalStudents; index++) { 
          myClass[index].displaydetails(); 
         } 
         break; 
        case 4: 
         //option 4 - change course 
         Student.getCourse(); 
         System.out.println(); 
         System.out.println("Enter new course details - "); 
         newCourse = input.next(); 
         input.nextLine(); 
         Student.setCourse(newCourse); 
         break; 
        case 5: 
         //option 5 - search for student by name 
         System.out.println("Student surname to display - "); 
         delSurname = input.next(); 
         input.nextLine(); 
         findStudent(myClass,delSurname, position, totalStudents); 
         if (position >= 0 && position < NUM_STUDENTS) { 
          myClass[position].displaydetails(); 
         } 
         break; 
        case 6: 
         //option 6 - exit program 
         menu = false; 
         break; 

       } 

      } 
     } 

    } 
} 

回答

0

你必須檢查是否surname[index].surname.euqals(delSurname)因爲在你surname數組你有Student秒且不琴絃

現在你的代碼檢查類學生的一個實例是等於類String的一個實例,它不能。

+0

這就是我正在尋找的東西,感覺它會是簡單的東西。謝謝 – connor