Java入力と判断,Scannerとsplitの使い方

1741 ワード

今日は問題を1つ入力するのが難しい.
arr = {1, 2 , 3},1979
以上の文を入力することを意味し、1,2,3はint配列であり、1979はint変数である.2つの方法があります
  • hasNextInt():失敗しました.arrの先頭のためfalse
  • に直接戻ったようです.
  • input.nextLine()は行全体を取り、splitを使用して最終的に成功しなかった.str自体の値がintタイプであるかどうかをどのように判断するか分からないからだ.ここで少しPython脳の影響を受けて、いつもtype()関数で解決したいと思っています.その後、いろいろ探して、経験をまとめました.
  • input.nextLine()は行全体を取り、splitを使用し、=|,|\\{|\\}という区切り記号を使用します.ここではsを使用してみますが、使用しません.原因不明.
  • ステップ1を経て、戻り値をString配列に割り当てます.
  • 反復配列の各要素は、単純な正規表現\\d{1,}で一致する( .matches( )).総括コードは以下の通りである:
  • /**
     * Created by lixuefei on 9/5/18.
     */
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Scanner;
    
    //arr = {1, 2 , 3},1979
    public class test {
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);
            String[] str_arr = input.nextLine().split(",|=|\\{|\\}");
            ArrayList coin = new ArrayList();
            for(String i:str_arr){
                if(i.trim().matches("\\d{1,}")){
                    coin.add(Integer.parseInt(i.trim()));
                }
            }
            for(Integer test_i:coin){
                System.out.println(test_i);
            }
        }
    }
    
    

    正規表現は本当に使いやすいです.しかし、問題はいつも間違っていることです.基本的な構文と基本的な文をここに記録します.
    #* + ? 「ab*」:1つの文字列に1つのaの後に0つまたは複数のbが続くことを示す.「a」、「ab」、「abbb」、......「ab+」:1つの文字列に1つのaの後ろに少なくとも1つのb以上が付いていることを示す.「ab」、「abbb」......「ab?」:1つの文字列に1つのaの後ろに0つまたは1つのbがついていることを表す.“a”, "ab"
    \s\S
    s空白文字(スペース、リターン、タブ、改ページなど)
    S空白以外の文字.それはs以外のすべてです
    1数字:1*$
    2 nビットの数字:^d{n}$
    3少なくともnビットの数字:^d{n,}$
    4 m-nビットの数字:^d{m,n}$
    5ゼロとゼロ以外の先頭の数字:^(0|[1-9][0-9]*)$
    0-9 ↩︎