有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何过滤用户输入以接受char和int,而不是specialchar。然后只将int值放入数组中

使用字符串数据类型创建一个新队列,其中用户输入队列的元素

限制:

  1. 用户只能输入字母和数字(A-Z、A-Z和0-9)
  2. 程序仅从输入中获取数字(整数)
  3. 在任何情况下,至少输入一个特殊字符,程序将返回一个错误。(这包括空间)

这是该计划的要求。 这就是我到目前为止所做的:

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) 个答案

  1. # 1 楼答案

    您允许的字符是A-Za-z0-9。在正则表达式中\\w匹配这些字符。和\\W匹配除这些字符以外的任何字符。因此,将后者设置为您的分隔符,看看它是如何工作的

    Scanner scan = new Scanner(System.in);
    scan.useDelimiter("\\W+");
    while (true) {
        System.out.println(scan.next());
    }
    

    scan.next()返回的每组字符应仅包含允许的字符