2013-03-25 30 views
1

我在這個項目上,允許用戶輸入名稱到輸出窗口工作,但他們並不想能夠輸入數字。我想不出正確的代碼行,使其向他們無法輸入號碼(如果他們這樣做是否會給他們一個錯誤消息)。使的ArrayList()不允許號的編輯輸入

import java.util.*; 

public class UserInput 
{ 
public static void main(String[] args) 
{ 
    List<String> list = new ArrayList<String>(); 
    Scanner stdin = new Scanner(System.in); 

    do 
    { 
    Collections.sort(list); 
    System.out.println("Current list is " + list); 
    System.out.println("Add more? (y/n)"); 

    if (stdin.next().startsWith("y")) 
     { 
     System.out.println("Enter: "); 
     list.add(stdin.next()); 
    } 

     else 
     { 
     break; 
    } 
    } 

    while (true); 

    System.out.println("List is " + list); 
    String[] arr = list.toArray(new String[0]); 
    System.out.println("Array is " + Arrays.toString(arr)); 
} 
} 
public void add(String string) { 

try { 
    double d = Double.parseDouble(string); 
    } catch(NumberFormatException e) { 
     // throw a exception or something. 
     return; 
    } 

    super.add(string); 
    return;  
} 

這裏是我的代碼!

非常感謝您的幫助!

回答

1

請在輸入

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.Collections; 
import java.util.List; 
import java.util.Scanner; 

public class UserInput { 
    public static void main(String[] args) { 
     List<String> list = new ArrayList<String>(); 
     Scanner stdin = new Scanner(System.in); 

     do { 
      System.out.println("Enter: "); 
      String strin = stdin.next(); 
      if (isNumeric(strin)) { 
       System.out.println("Please enter a non numeric value"); 
      } else { 
       list.add(strin); 
      } 

      Collections.sort(list); 
      System.out.println("Current list is " + list); 
      System.out.println("Add more? (y/n)"); 

     } while (stdin.next().startsWith("y")); 

     System.out.println("List is " + list); 
     String[] arr = list.toArray(new String[0]); 
     System.out.println("Array is " + Arrays.toString(arr)); 
    } 

    public static boolean isNumeric(String str) { 
     return str.matches("-?\\d+(\\.\\d+)?"); 
    } 
} 
+0

我只是想這一點,是給我的錯誤「UserInput.java:31:分析到達文件的末尾」。有什麼建議? – Boom 2013-03-25 03:29:32

+0

什麼文件 – 2013-03-25 03:31:03

+0

是行號31定了!太謝謝你了 – Boom 2013-03-25 03:34:07

0

您可以創建一個類,擴展ArrayList並覆蓋add()方法,檢查給定的String是否是一個數字。

import java.util.*; 

public class UserInput 
{ 
public static void main(String[] args) 
{ 
    List<String> list = new MyArrayList<String>(); 
    Scanner stdin = new Scanner(System.in); 

    do 
    { 
    Collections.sort(list); 
    System.out.println("Current list is " + list); 
    System.out.println("Add more? (y/n)"); 

    if (stdin.next().startsWith("y")) 
     { 
     System.out.println("Enter: "); 
     try { 

      list.add(stdin.next()); 
     } catch (Exception e) { 
      // given string was a number. 
     } 
    } 

     else 
     { 
     break; 
    } 
    } 

    while (true); 

    System.out.println("List is " + list); 
    String[] arr = list.toArray(new String[0]); 
    System.out.println("Array is " + Arrays.toString(arr)); 
} 
} 
class MyArrayList extends ArrayList<String> { 

    public void add(String string) { 

     try { 
      double d = Double.parseDouble(string); 
     } catch(NumberFormatException e) { 
      super.add(string); 
      return; 
     } 

     throw new Exception(); 
} 

但是,您還需要重寫其他「add」方法。

+0

正則表達式測試說實話,我真的不知道該怎麼做......請你給我一個例子嗎? – Boom 2013-03-25 03:17:27

+0

我只是一個初學者! – Boom 2013-03-25 03:19:05

+0

我正在編輯答案。 – 2013-03-25 03:21:59