Java 使Arraylist()不允许输入已编辑的数字

Java 使Arraylist()不允许输入已编辑的数字,java,Java,我正在做一个项目,它允许用户在输出窗口中输入姓名,但他们不能输入数字。我无法找出正确的代码行,以使他们无法输入数字(如果他们这样做,If将给他们一个错误消息) import java.util.*; 公共类用户输入 { 公共静态void main(字符串[]args) { 列表=新的ArrayList(); 扫描仪标准输入=新扫描仪(System.in); 做 { 集合。排序(列表); System.out.println(“当前列表为”+列表); System.out.println(“

我正在做一个项目,它允许用户在输出窗口中输入姓名,但他们不能输入数字。我无法找出正确的代码行,以使他们无法输入数字(如果他们这样做,If将给他们一个错误消息)

import java.util.*;
公共类用户输入
{
公共静态void main(字符串[]args)
{
列表=新的ArrayList();
扫描仪标准输入=新扫描仪(System.in);
做
{   
集合。排序(列表);
System.out.println(“当前列表为”+列表);
System.out.println(“添加更多?(y/n)”);
if(stdin.next().startsWith(“y”))
{
System.out.println(“输入:”);
list.add(stdin.next());
} 
其他的
{
打破
}
} 
虽然(正确);
System.out.println(“列表为”+列表);
字符串[]arr=list.toArray(新字符串[0]);
System.out.println(“数组是”+Arrays.toString(arr));
}
}
公共空添加(字符串){
试试{
double d=double.parseDouble(字符串);
}捕获(数字格式){
//抛出异常或什么的。
返回;
}
super.add(字符串);
返回;
}
这是我的密码


非常感谢你的帮助

您可以创建一个类来扩展
ArrayList
并重写
add()
方法,检查给定的
字符串是否为数字

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();
}
import java.util.*;
公共类用户输入
{
公共静态void main(字符串[]args)
{
List List=新的MyArrayList();
扫描仪标准输入=新扫描仪(System.in);
做
{   
集合。排序(列表);
System.out.println(“当前列表为”+列表);
System.out.println(“添加更多?(y/n)”);
if(stdin.next().startsWith(“y”))
{
System.out.println(“输入:”);
试一试{
list.add(stdin.next());
}捕获(例外e){
//给定的字符串是一个数字。
}
} 
其他的
{
打破
}
} 
虽然(正确);
System.out.println(“列表为”+列表);
字符串[]arr=list.toArray(新字符串[0]);
System.out.println(“数组是”+Arrays.toString(arr));
}
}
类MyArrayList扩展了ArrayList{
公共空添加(字符串){
试试{
double d=double.parseDouble(字符串);
}捕获(数字格式){
super.add(字符串);
返回;
}
抛出新异常();
}

但是您也需要重写其他“
add
”方法。

您可以创建一个扩展
ArrayList
的类,并重写
add()
方法,检查给定的
字符串是否为数字

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();
}
import java.util.*;
公共类用户输入
{
公共静态void main(字符串[]args)
{
List List=新的MyArrayList();
扫描仪标准输入=新扫描仪(System.in);
做
{   
集合。排序(列表);
System.out.println(“当前列表为”+列表);
System.out.println(“添加更多?(y/n)”);
if(stdin.next().startsWith(“y”))
{
System.out.println(“输入:”);
试一试{
list.add(stdin.next());
}捕获(例外e){
//给定的字符串是一个数字。
}
} 
其他的
{
打破
}
} 
虽然(正确);
System.out.println(“列表为”+列表);
字符串[]arr=list.toArray(新字符串[0]);
System.out.println(“数组是”+Arrays.toString(arr));
}
}
类MyArrayList扩展了ArrayList{
公共空添加(字符串){
试试{
double d=double.parseDouble(字符串);
}捕获(数字格式){
super.add(字符串);
返回;
}
抛出新异常();
}

但是您还需要重写其他“
add
”方法。

对输入进行正则表达式测试

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+)?");
    }
}
import java.util.ArrayList;
导入java.util.array;
导入java.util.Collections;
导入java.util.List;
导入java.util.Scanner;
公共类用户输入{
公共静态void main(字符串[]args){
列表=新的ArrayList();
扫描仪标准输入=新扫描仪(System.in);
做{
System.out.println(“输入:”);
字符串strin=stdin.next();
if(isNumeric(strin)){
System.out.println(“请输入非数值”);
}否则{
列表。添加(strin);
}
集合。排序(列表);
System.out.println(“当前列表为”+列表);
System.out.println(“添加更多?(y/n)”);
}while(stdin.next().startsWith(“y”);
System.out.println(“列表为”+列表);
字符串[]arr=list.toArray(新字符串[0]);
System.out.println(“数组是”+Arrays.toString(arr));
}
公共静态布尔值isNumeric(字符串str){
返回str.matches(“-?\\d+(\.\\d+)”;
}
}

对输入进行正则表达式测试

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+)?");
    }
}
import java.util.ArrayList;
导入java.util.array;
导入java.util.Collections;
导入java.util.List;
导入java.util.Scanner;
公共类用户输入{
公共静态void main(字符串[]args){
列表=新的ArrayList();
扫描仪标准输入=新扫描仪(System.in);
做{
System.out.println(“输入:”);
字符串strin=stdin.next();
if(isNumeric(strin)){
System.out.println(“请输入非数值”);
}否则{
列表。添加(strin);
}
集合。排序(列表);
System.out.println(“当前列表为”+列表);
System.out.println(“添加更多?(y/n)”);
}while(stdin.next().startsWith(“y”);
System.out.println(“列表为”+列表);
字符串[]arr=list.toArray(新字符串[0]);
System.out.println(“数组是”+Arrays.toString(arr));
}
公共静态布尔值isNumeric(字符串str){
返回str.matches(“-?\\d+(\.\\d+)”;
}
}