web-dev-qa-db-ja.com

Java文字が大文字/小文字/数字/母音かどうかをテストするプログラム

前に言ったように、入力した文字がパラメーターの1つであるかどうかをテストするにはどうすればよいですか?私はこのコードを書きましたが、うまく動作しないようです(またはまったく動作しないようですが、エラーはありません)。また、ここで使用した基本的なコードを使用する必要があります。それは学校のためであり、彼らが私たちに教えていないことを使うと、私たちはポイントを失います(くそ学校)。

class doody
 {
  public static void main(String[] args)
  { char i;
    char input='D';

    for(i='A';i<='Z';i++)//check if uppercase
    {
        if(input==i){
            System.out.println("Uppercase");
            switch(input){
            case 'A':
            case 'E':
            case 'I':
            case 'O':
            case 'U':
                System.out.println("Vowel"); break;
            default: System.out.println("Not a vowel"); break;}
            }

        for(i='a';i<='z';i++)//check if lowercase
        {
            if(input==i){
                System.out.println("Lowercase");
                switch(input){
                case 'a':
                case 'e':
                case 'i':
                case 'o':
                case 'u':
                System.out.println("Vowel"); break;
                default: System.out.println("Not a vowel"); break;
                }}


        for(i='0';i<='9';i++)//check if number
        {
            if(input==i)
                System.out.println("Number");
        }

    }

}}}

編集:ここに私が今日一緒に投げたいくつかのコードがあります。はるかに簡単です。これが以前私に起こらなかった理由がわかりません。おそらく、私がうんざりしていたからでした。

class doody
{
 public static void main(String[] args)
 {  
    char input='$';//input here.

    boolean lorn=false;
    if(input>='a'&&input<='z')
        {System.out.println("Lowercase");
            lorn=true;
        if(input=='a')System.out.println("Vowel.");
        if(input=='e')System.out.println("Vowel.");
        if(input=='i')System.out.println("Vowel.");
        if(input=='o')System.out.println("Vowel.");
        if(input=='u')System.out.println("Vowel.");
        }

    if(input>='A'&&input<='Z')
        {System.out.println("Uppercase");
            lorn=true;
        if(input=='A')System.out.println("Vowel.");
        if(input=='E')System.out.println("Vowel.");
        if(input=='I')System.out.println("Vowel.");
        if(input=='O')System.out.println("Vowel.");
        if(input=='U')System.out.println("Vowel.");
        }

    if(input>='0'&&input<='9')
        {
            lorn=true;
            System.out.println("Number");
        }

    if(lorn==false)System.out.println("It is a special character");
 }
}
10
Prnth

コードにforループは必要ありません。

メソッドを再実装する方法は次のとおりです

  • 入力が「A」と「Z」の間にある場合、大文字
  • 入力が「a」と「z」の間にある場合、その小文字
  • 入力が「a、e、i、o、u、A、E、I、O、U」のいずれかである場合、その母音
  • その他の子音

編集:

続行するためのヒントを次に示します。次のコードスニペットは、intsのchar値を提供します

System.out.println("a="+(int)'a');
System.out.println("z="+(int)'z');
System.out.println("A="+(int)'A');
System.out.println("Z="+(int)'Z');

出力

a=97
z=122
A=65
Z=90

xaの2つの数字の間に数字bが存在するかどうかを確認する方法は次のとおりです。

// x greater than or equal to a and x less than or equal to b
if ( x >= a && x <= b ) 

比較中にcharsは数値として扱うことができます

これらのヒントを組み合わせることができれば、必要なものを見つけることができるはずです;)

12
Prashant Bhate

宿題でない場合は、Character.isDigit(char)Character.isUpperCase(char)Character.isLowerCase(char)などの既存のメソッドを使用できます。 tはASCIIでのみ動作しますが、さまざまな文字セットでも動作します。

static final char[] VOWELS = { 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U' };

static boolean isVowel(char ch) {
    for (char vowel : VOWELS) {
        if (vowel == ch) {
            return true;
        }
    }
    return false;
}

static boolean isDigit(char ch) {
    return ch >= '0' && ch <= '9';
}

static boolean isLowerCase(char ch) {
    return ch >= 'a' && ch <= 'z';
}

static boolean isUpperCase(char ch) {
    return ch >= 'A' && ch <= 'Z';
}
12
Natix

Java:文字クラスにはisLowerCase(Char ch)ans isUpperCase(Char ch)と呼ばれる静的メソッドがあり、Character.isDigit(Char ch)はブール値を与えます。仕事

例:

文字列abc = "HomePage";

char ch = abc.charAt(i); // here i= 1,2,3......

if(Character.isLowerCase(ch))
{
   // do something :  ch is in lower case
}

if(Character.isUpperCase(ch))
{
   // do something : ch is in Upper case
}

if(Character.isDigit(ch))
{
  // do something : ch is in Number / Digit
}
7
Chetan Bhoyar

コードに関するいくつかのコメント

  • なぜfor(i='A';i<='Z';i++)のような2つのforループが必要なのか、単純なifステートメントでこれをチェックできる場合...範囲全体をループしながら、単純にその範囲に含まれる
  • 答えを見つけたときでも(たとえば、入力がAのとき、最初のループに初めて入ったときに結果が得られます)、残りすべてをループします。
  • System.out.println("Lowercase");ステートメント(および大文字のステートメント)が間違ったループに配置されています
  • 使用を許可されている場合は、たとえばNice CharacterメソッドとisUpperCaseメソッドを持つisLowerCaseクラスを参照することをお勧めします。

宿題なので残りはあなたにお任せします

2
Robin

前後に大文字と小文字があるように見えます。 A-Zは上、a-zは下になります。正確には効率的ではありませんが、大文字と小文字を逆にした例外を除き、正しく出力されるはずです。

0
Dan Hardiker

これはあなたの宿題ですので、ループを使用して文を切り替える必要があると思います。それはOKですが、なぜあなたのすべてのループが特権的なループの内側にあるのですか?

それらを同じ「レベル」に取り出すだけで、コードは問題ありません。 (低/アップミックスアップの一部)。

ヒント:追加の「Enter」と「Space」を押すのは無料です! (それが私があなたのコードに最初にしたことであり、問​​題は非常に些細なものになりました)

0
222
 Char input;

 if (input.matches("^[a-zA-Z]+$")) 
 {
     if (Character.isLowerCase(input))
     {
        // lowercase
     } 
     else
     { 
        // uppercase
     }

     if (input.matches("[^aeiouAEIOU]"))
     {
          // vowel
     }
     else 
     {
         // consonant
     }
 }
 else if (input.matches("^(0|[1-9][0-9]*)$"))
 {
       // number
 }
 else
 {
     // invalid
 }
0
d.moncada

これはあなたが探しているものではないかもしれませんが、私はあなたがこれを行う本当の方法を知っているべきだと思いました。 _Java.lang.Character_クラスのisUpperCase()を使用して、キャラクターの大文字と小文字を調べることができます。 isDigit()を使用して、数字と文字を区別できます(これは単なる参考です:))。その後、toUpperCase()を実行してから、母音の切り替えを実行できます。これにより、コードの品質が向上します。

0
MozenRath