-1

これを明確にするために、これはハードウェアです。

私たちが行っているプロジェクトでは、ユーザーは数字や特殊文字 (! @ £ など) を入力できません。

        char letter;
        String phonetic;

        Scanner kb = new Scanner(System.in);


        System.out.print("Please enter a letter: ");
        letter = letter = kb.next().charAt(0);

        switch(Character.toUpperCase(letter))
{
       case 'A':
            {
                Dot();
                Dash();
                Red();
            }
            break;

        case '1,2,3,4,5,6,7,8,9,0':
            {
               System.out.println('No number input please!');
            }
        break;
}

エラーはオンです

'1,2,3,4,5,6,7,8,9,0' 

エクリプス 言う

invalid character constant 

すべての数字を手動で入力する必要があるとしたら、非常に面倒ではありませんか?

つまり、ケース '1': ケース '2':

でもで

case 1,2,3,4,5,6,7,8,9,0: 

うまくいきません。

switch ステートメントを使用してこれを行うより短い方法はありますか?

ありがとうございました!

4

5 に答える 5

4

Case 式は Java 7 の an または a である必要があるためint-compatible literalです。String

case '1,2,3,4,5,6,7,8,9,0':

文字リテラルは、一重引用符を使用して表されます。c、それは1つの長さだけでなければなりませんが、あなたのケースはそれを反映していないため、エラーです。

'1,2,3,4,5,6,7,8,9,0'  this is not a legal character.

文字がアルファのみかどうかを確認したいだけの場合は、次のコードのように、切り替えが開始される前にCharcter #isDigit(char)またはCharcter#isLetterを使用します。

char ch=  (Character.toUpperCase(letter);
if(!Character.isDigit(ch)) {
    switch(Character.toUpperCase(letter))
     {
       case 'A':
            {
                Dot();
                Dash();
                Red();
            }
            break;
        }
     }
else {
       System.out.println("no numbers please")
}
于 2013-01-30T18:29:25.540 に答える
2

ケースを使用するより簡単な方法はありません。どうですか?:

if ('0' <= letter && letter <= '9')
  System.out.println('No number input please!');
于 2013-01-30T18:30:38.333 に答える
1

いいえ、この状況での Java は C# のようにスマートではありません。そのためには、複数の行を記述する必要があります。文字列を比較したい場合は、ifステートメントを使用する必要があります。また、比較のために次のコードを使用することを忘れないでください。

if("search".equals(string2)) {...}

これで比較することはできません==。メモリアドレスを比較するだけです。また、変数ではなく静的文字列で equals を使用していることにも注意してstring2くださいstring2

于 2013-01-30T18:27:16.333 に答える
1

すべての数字を手動で入力する必要があるとしたら、非常に面倒ではありませんか?

はい。

switch ステートメントを使用してこれを行うより短い方法はありますか?

いいえ。

if代わりにステートメントを検討してください...

于 2013-01-30T18:27:18.507 に答える
0

これがあなたをもっと啓発することを願っています。

あなたの式は出力を として生成すると考えてくださいA , B, C, D, E, F, G, H, I, ...till Z。そして、それらすべてに対して同じメソッド/関数を実行したいとします。

次に、文字の値を確認し、次のサンプル プログラムのプログラムで説明されているように、asciiコードを変更してループまたは使用するifことforができます。switch

詳細については、コードをいじってみてください。

public class SwitchClass 
{   

public void method1()
{
        System.out.println("Menthod 1");
}

public void method2()
{
        System.out.println("Menthod 2");
}

public void method3()
{
        System.out.println("Menthod 3");
}   

public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);
    SwitchClass sw = new SwitchClass();
    System.out.println("Enter the String:");
    String input = in.next();

    for(int i = 0; i<input.length(); i++)
    {

        switch(Character.toUpperCase(input.charAt(i)))
        {

            case 'A':
            case 'B':
            case 'C':
            case 'U':
                    System.out.println(Character.toUppercase(input.charAt(i))+" Case calling");
                    sw.method1();
                    sw.method2();
                    sw.method3();
                    break;

            default:
                    System.out.println("No number input please!");
                    break;
        }
    }       
}
}
于 2013-04-23T05:40:01.747 に答える