2
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.println("Enter Code");

        String code = input.next();
    }

    public static boolean isValidCode (String code) {

    }
}

Javaで入力制限をかけようとすると大変困っています。この例では、$やなどの記号のみを受け入れる文字列コードが必要%です。数字、文字、またはその他の記号がないことを確認するにはどうすればよいですか? ありがとう

4

4 に答える 4

6

$これは、 and/or以外のものを含む文字列を無効にするために機能するはず%です:

public static boolean isValidCode (String code) {
    return code.matches("^[$%]*$");
}

文字列を空にしないことも必要な場合は、 を に変更し*ます+。他の文字を受け入れる必要がある場合は、それらを文字クラス リスト (角括弧内の文字) に追加するだけです。

テストが何度も実行される場合 (投稿されたコードではそうではありません)、パターンをプリコンパイルする方が効率的です。

private static final Pattern p = Pattern.compile("^[$%]*$");

public static boolean isValidCode (String code) {
    return p.matcher(code).matches();
}

(への呼び出しcode.matches(...)は、上記を行う便利なメソッドです。)

于 2012-09-23T17:08:05.690 に答える
1
public static boolean isValidCode(String code) {
    return code.matches("[$%]*");
}

regex javadoc でわかるように、山かっこは、囲み文字 (この場合は $ と %) から選択できることを示しています。* 0 回以上出現する必要があると言う。

于 2012-09-23T17:01:23.537 に答える
0
import java.util.Scanner;

public class Test 
{
    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter Code");

        String code = input.next();
        for(int i=0;i<code.length();i++)
        {
            char c = code.charAt(i);

            if((!Character.isDigit(c))&&(!Character.isLetter(c)&&(!Character.isWhitespace(c))))      
            {
                if(c=='%'||c=='$')
                {
                    //What U Want..........
                }
                else
                {
                    System.out.println("Plz! Enter Only '%' or '$'");
                    break;
                }
            }//if
            else
            {
                System.out.println("Allows Only '%' or '$' Symbols");
                break;
            }
        }
    }
}
于 2012-09-23T17:42:41.340 に答える
0

Characterクラスを使用します。

これがあなたのためのコードです:

public class Hello {




    public static void main(String[] args) {


    Scanner input = new Scanner(System.in);
    System.out.println("Enter Code");

     String code = input.next();
     char c = code.charAt(0);
    if( (!Character.isDigit(c)) && (!Character.isLetter(c) && (!Character.isWhitespace(c)))){

        if(c == '%' || c=='$'){

            System.out.println("Its what u want");
        }else{
            System.out.println("Not what u want");
        }
    }else{
        System.out.println("Not what u want$");
    }


     }



}
于 2012-09-23T17:05:34.520 に答える