2017-10-04 103 views
-1

的時候所以我是一個初學者到Java(未編程),我encoutered一個問題,即它不會讓我創建一個ArrayList:爪哇 - 錯誤創建的ArrayList

import java.io.*; 
import java.util.ArrayList; 
import java.util.*; 
public class OrderingNumbers{ 
    public static void main (String[] args)throws IOException{ 
    boolean keepRunning = true; 
    List<String> numbers = new ArrayList<String>(); //<--this one does not work 
    ArrayList sortedNumbers = new ArrayList();//<-- This one works 
    while(keepRunning){ 
     DataInputStream input = new DataInputStream(System.in); 
     System.out.print("Do you want to sort the numbers or add a number?"); 
     String answer = input.readLine(); 
     if(answer.equals("sort")){ 
      for(int i = 0; i < numbers.size(); i++){ 
      System.out.println(numbers.get(i)); 

      } 
      System.out.println("Bye Bye."); 
      keepRunning = false; 
     }else if(answer.equals("add")){ 
      System.out.print("What number to you want to add?"); 
      numbers.add(input.readLine()); 
      System.out.println("Added number."); 
     }else{ 
      System.out.print("That is not an option."); 
     } 
    } 
    } 
} 

我試圖這樣做,以及,ArrayList<String> strArrayList = new ArrayList<String>();但仍然無法正常工作。我想讓用戶可以添加另一個數字,如果他們想要的數組。

+1

請勿使用原始類型。它怎麼不起作用? –

+2

你正在編譯哪個版本的java? – Jack

+0

@ElliottFrisch它說這是一個無效的assigment運算符 –

回答

1
import java.io.*; 
import java.util.*; 


public class OrderingNumbers{ 
    public static void main (String[] args)throws IOException{ 
    boolean keepRunning = true; 
    // here is the corrected line 
    List numbers = new ArrayList(); 
    ArrayList sortedNumbers = new ArrayList();//<-- This one works 
    // add data to sort 
    numbers.add(0, 1); // adds 1 at 0 index 
    numbers.add(1, 2); // adds 2 at 1 index 
    System.out.println(numbers); 
    while(keepRunning){ 
     Scanner input = new Scanner(System.in); 
     System.out.print("Do you want to sort the numbers or add a number?"); 
     String answer = input.nextLine(); 
     if(answer.equalsIgnoreCase("sort")){ 
      for(int i = 0; i < numbers.size(); i++){ 
      System.out.println(numbers.get(i)); 
      // note does not actually do any sorting 

      } 
      System.out.println("Bye Bye."); 
      keepRunning = false; 
     }else if(answer.equalsIgnoreCase("add")){ 
      System.out.print("What number to you want to add?"); 
      numbers.add(input.nextLine()); 
      System.out.println("Added number."); 
     }else{ 
      System.out.print("That is not an option."); 
     } 
    } 
    } 
} 
+0

DataInputStream readLine已折舊。我將其更改爲掃描儀類以擺脫該警告。 –

+0

在if上也使用equalsIgnoreCase而不是equals。這允許SORT或排序或排序 –

+0

解釋屬於帖子,而不是隱藏在評論部分。 – Tom

0

正常用法如下:

import java.util.List; 

List<String> numbers = new ArrayList<>(); 
List<String> sortedNumbers = new ArrayList<>(); 

所以一般:

  • 變量最通用的類​​型(列表),以便實現可以在以後改變,及各種名錶會合適。
  • 始終鍵入List<...>
  • 使用鑽石<>運營商。

錯誤可能是import java.awt.List;這是另一個具有相同名稱的類。可能不在這裏。

要排序(整數)數字List<Integer>看起來更邏輯,因爲9 < 10,但「9」按字母順序大於「10」。

爲了更好地閱讀文本,請使用掃描儀,如其他答案中所述。它有:

if (scanner.hasNextInt()) { 
    int number = scanner.nextInt(); 
    numbers.add(number); // adds an Integer with number's value. 
... 

然而,真正的錯誤並不清楚。

+0

你們不要抓住發佈的代碼並編譯它嗎?他得到了折舊錯誤 –

+0

@JeremiahStillings我得到了一些紅耳朵,對OP:棄用意味着仍然允許但不好的風格,並且可能在將來不再編譯。我將答案留給擬議的修改。 –

+1

@JeremiahStillings使用不建議使用的代碼___不是錯誤。這是不恰當的,是的,但不是一個錯誤。 – Tom