簡體   English   中英

如何過濾用戶輸入以接受 char 和 int,但不接受 specialchar。 然后只將 int 放入一個數組中

[英]How do I filter a user input to accept char and int, but not specialchar. Then only takes the int into an array

使用 String 數據類型創建一個新隊列,其中用戶輸入隊列的元素。

限制:

  1. 用戶只能輸入字母和數字(AZ、az & 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]", " "); 但我不知道如何使它工作。 請幫忙。

您允許的字符是AZaz0-9 在正則表達式中, \\w匹配這些字符。 並且\\W匹配除這些字符之外的任何字符。 所以將后者設置為你的分隔符,看看它是如何工作的。

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

scan.next()返回的每組字符應該只包含您允許的字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM