2016-01-13 70 views
0

例如,我有一個隨機輸入的用戶輸入列表。用戶輸入可以在1-10之間變化。用戶輸入然後排入隊列並出列以顯示用戶輸入列表。顯示用戶輸入的第一個字母

但是,我想使用用戶輸入來顯示每個用戶輸入的第一個字母。我試圖創建一個名爲name1的新變量來存儲用戶輸入,但是由於name1變量爲空,它會返回一個錯誤。

for(int i =1;i<=value ;i++){ 
    System.out.println("Enter name #" + i+":"); 
    String name = input.next(); 
    String name1 = name; 
    myQueue.enqueue(name); 
} 
System.out.println("List of names: "); 
for(int j=1; j <=value; j++){ 
    System.out.println(j+". " +(myQueue.dequeue())); 

} 
System.out.println("Statistics:"); 
char firstletter = name1.charAt(0); //error: value is null 
System.out.println(firstletter); 
+0

什麼是輸入變量?你能顯示變量的聲明嗎? –

+2

'String name1 = name;'在'for'循環之外定義它並嘗試。 – roottraveller

+5

你的字符串name1是for循環中的局部變量。 – amkz

回答

0

name1= name;

必須是循環

1

希望之外,這將幫助你

import java.util.LinkedList; 
import java.util.Scanner; 

class GenQueue<E> { 
    private LinkedList<E> list = new LinkedList<E>(); 
    public void enqueue(E item) { 
     list.addLast(item); 
    } 
    public E dequeue() { 
     return list.poll(); 
    } 
    public boolean hasItems() { 
     return !list.isEmpty(); 
    } 
    public int size() { 
     return list.size(); 
    } 
    public void addItems(GenQueue<? extends E> q) { 
     while (q.hasItems()) 
     list.addLast(q.dequeue()); 
    } 
} 

public class myQueue { 
    public static void main(String[] args) { 
     GenQueue<Employee> empList; 
     empList = new GenQueue<Employee>(); 
     GenQueue<HourlyEmployee> hList; 
     hList = new GenQueue<HourlyEmployee>(); 

     Scanner reader = new Scanner(System.in); // Reading from System.in 
     System.out.println("Enter a number: "); 
     int n = reader.nextInt(); // Scans the next token of the input as an int. 
     for(int i =1;i<=n ;i++){ 
      System.out.println("Enter a name: "); 
      String name = reader.next(); 

      hList.enqueue(new HourlyEmployee(name, name)); 
      empList.addItems(hList); 
     } 
     System.out.println("The employees' names are:"); 
     while (empList.hasItems()) { 
     Employee emp = empList.dequeue(); 
     //System.out.println(emp.firstName + " " + emp.lastName); 
     char firstletter = emp.firstName.charAt(1); //error: value is null 
     System.out.println(firstletter); 
     } 
    } 
} 

class Employee { 
    public String lastName; 
    public String firstName; 
    public Employee() { 
    } 
    public Employee(String last, String first) { 
     this.lastName = last; 
     this.firstName = first; 
    } 
    public String toString() { 
     return firstName + " " + lastName; 
    } 
} 

class HourlyEmployee extends Employee { 
    public double hourlyRate; 
    public HourlyEmployee(String last, String first) { 
     super(last, first); 
    } 
} 
0

我希望它可以幫助你:

for(int i = 1; i <= value; i++) 
{ 
    System.out.println("Enter name #" + i + ":"); 
    myQueue.enqueue(input.next()); 
} 

System.out.println("List of names: "); 
for(int j = 1; j <= value; j++) 
{ 
    String name = (String) myQueue.dequeue(); //pop element 
    System.out.println(j + ". " + name); 
    myQueue.enqueue(name); 
} 

System.out.println("Statistics: "); 
for(int j = 1; j <= value; j++) 
{ 
    String name = (String) myQueue.dequeue(); 
    System.out.println(name.charAt(0)); 
} 
+0

嗨,感謝您的幫助。即時通訊使用第二種方法,但即時通訊仍然在這個特定的行上發生錯誤:String name = myQueue.dequeue();它說對象不能轉換爲字符串 – JoanT

+0

試試這個:String name =(String)myQueue.dequeue(); 但我不確定,因爲我旁邊沒有任何編譯器:P – Dragomirus

+0

謝謝。它的工作原理,但有什麼辦法可以在for循環之外顯示下面的所有統計信息嗎? – JoanT

0

我想什麼你在這裏做的是德在循環外部指定name1,然後再次在循環內重新聲明它。取消循環內的聲明並改爲寫入name1 = name

相關問題