java如何过滤用户输入以接受char和int,而不是specialchar。然后只将int值放入数组中
使用字符串数据类型创建一个新队列,其中用户输入队列的元素
限制:
- 用户只能输入字母和数字(A-Z、A-Z和0-9)
- 程序仅从输入中获取数字(整数)
- 在任何情况下,至少输入一个特殊字符,程序将返回一个错误。(这包括空间)
这是该计划的要求。 这就是我到目前为止所做的:
import java.util.Queue;
import java.util.Scanner;
import java.util.Iterator;
public class Main {
public static void main (String args[]){
Scanner scan = new Scanner(System.in);
System.out.println("This is a Queue program. Please enter how many integer/s will be inputted.");
int count = scan.nextInt();
scan.nextLine();
System.out.println("Enter the valid interger/s:");
String[] list = new String[count];
for (int i = 0; i < count; i++){
list[i] = scan.nextLine();
}
Queue<String> newlist = new LinkedList<>();
for (String i:list){
newlist.add(i);
}
System.out.println(newlist);
Iterator<String> i=newlist.iterator();
while(i.hasNext()){
if(i.next().toString().matches("[^0-9]+")){
i.remove();
}
}
System.out.println(newlist);
}
}
显然,这个程序只删除char而不与int组合。我试图使用replaceAll("[^\\d]", " ");
,但我不知道如何使它工作。请帮忙
# 1 楼答案
您允许的字符是
A-Z
、a-z
和0-9
。在正则表达式中\\w
匹配这些字符。和\\W
匹配除这些字符以外的任何字符。因此,将后者设置为您的分隔符,看看它是如何工作的从
scan.next()
返回的每组字符应仅包含允许的字符