1

私は、ユーザーが出力ウィンドウに名前を入力できるようにするこのプロジェクトに取り組んでいますが、数字を入力できるとは想定されていません。数字を入力できない場所に到達するための正しいコード行がわかりません(入力するとエラーメッセージが表示されます)。

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;      
}

これが私が持っているコードです!

助けてくれてありがとう!

4

2 に答える 2

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+)?");
    }
}
于 2013-03-25T03:19:29.073 に答える
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ただし、他の" "メソッドもオーバーライドする必要があります。

于 2013-03-25T03:14:47.710 に答える