2013-04-07 80 views
0

如何讀取用戶輸入,一次一行地創建對象。然後進入一個ArrayList?正如你所看到的,當我輸入這個名字時,它會分解它,只存儲姓氏。或者如果我這樣做:中間名,它存儲中間名和姓氏。如何將多字輸入讀入一個字符串?

我第一次輸入名稱,首先調用搜索方法,以查看該名稱是否已存在於ArrayList中。這工作正常。如果名稱不在列表中,搜索將返回空值。然後提示輸入和添加方法。

case 1: { 
      System.out.print("Enter the Students name: "); 
      String nameSearch = kbd.next(); 
      Student stu = dc.search(nameSearch); 
      if (stu != null) { 
       System.out.println(stu); 
      } 
      else { 
       System.out.print("Enter name AGAIN: "); 
       String nameAdd= kbd.nextLine(); 

       System.out.print("Enter grade (freshman, sophomore, junior, senior: "); 
       String categoryAdd = kbd.nextLine(); 

       System.out.print("Major: "); 
       String majorAdd = kbd.nextLine(); 

       System.out.print("Enter graduating year: "); 
       int yearAdd = kbd.nextInt(); 

       System.out.print("Enter student ID: (xxxx.xxxx: "); 
       double idAdd= kbd.nextDouble(); 

       dc.add(nameAdd, categoryAdd , majorAdd , 
         yearAdd , idAdd); 
      } 
      break; 
     } 

我輸入:

Enter the Students name: John Smith 
Not Found(Search Method) 
TEST 
Enter name AGAIN: TEST2 
Enter grade (freshman, sophomore, junior, senior: senior 
Major: Computer Science 
Enter graduating year: 2013 
Enter student ID: 1234.4567 

它是如何存儲對象內部當我打印的ArrayList:

Name: Smith 
Grade: senior 
Major: Computer Science 
Graduating Year: 2013 
Student ID: 1234.4567 

add方法:

public Student add(String name, String grade, 
     String major, int year, double id) { 
    Student newStu = new Student(addName, addGrade, addMajor, addYear, addId); 
    studentList.add(newStu); 
    System.out.println("Added!"); 
    return null; 
} 
+0

什麼是kbd?它不清楚從問題 – Lokesh 2013-04-07 06:19:53

+0

@loki掃描儀kbd =新的掃描儀(System.in); – trama 2013-04-07 06:21:48

+0

爲什麼要指定如果你只返回'null'就返回'Student'? – Makoto 2013-04-07 07:09:43

回答

0

這條線:

String nameSearch = kbd.next(); 

或許應該

String nameSearch = kbd.nextLine(); 

吧?

+0

我試過了,但它激活了我的搜索方法,由於某種原因,它在ArrayList中首次打印。我99%確定我的搜索方法不是問題... – trama 2013-04-07 06:12:09

0

大骨節病一個的BufferedReader(例如BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));),然後執行此操作...

case 1: { 
      System.out.print("Enter the Students name: "); 
      String nameSearch = kbd.readLine(); 
      Student stu = dc.search(nameSearch); 
      if (stu != null) { 
       System.out.println(stu); 
      } 
      else { 
       System.out.print("Enter name AGAIN: "); 
       String nameAdd= kbd.readLine(); 

       System.out.print("Enter grade (freshman, sophomore, junior, senior: "); 
       String categoryAdd = kbd.readLine(); 

       System.out.print("Major: "); 
       String majorAdd = kbd.readLine(); 

       System.out.print("Enter graduating year: "); 
       int yearAdd = Integer.parseInt(kbd.readLine()); 

       System.out.print("Enter student ID: (xxxx.xxxx: "); 
       double idAdd= Double.parseDouble(kbd.readLine()); 

       dc.add(nameAdd, categoryAdd , majorAdd , 
         yearAdd , idAdd); 
      } 
      break; 
     } 
0

應該String nameSearch = kbd.nextLine();。我閱讀了多行java教程。 希望這有助於。某種程度上來說。