0

文字を 1 つずつ受け入れ、文字数をカウントし、文字がセット { 'a'..'z', '0'..'9 にない場合は例外をスローする静的メソッドを持つクラスを作成します。 ', 'A'..'Z' }. 例外はスローされますが、キャッチされません (つまり、明示的な catch ブロックはありません)。このメソッドを呼び出して、メソッドが例外をスローした場合に「Error in Input」を出力するクライアント プログラムを作成します。

私の質問は、入力文字を数えて印刷する方法ですか?

import java.util.*;

public class Format {

    public static int countChars(char c) throws Exception {
        int count = 0;


        if (!Character.isLetterOrDigit(c)) {
            throw new Exception("Input Error");
        }

        return count;

    }
    public static void main(String[] args) {
        char c = ' ';
        int length = 0;

        Scanner input = new Scanner(System.in);
        System.out.println("Please enter a String: ");
        while (input.hasNext()) {
                String line = input.nextLine();
                for (int i = 0; i < length; i++) {
                    try{
                    countChars(line.charAt(i));
                }catch(Exception e){
                    System.out.println("Wrong Character");
                    System.out.println(e.getMessage());
                    System.exit(0);
                }
            }
        }
    }
  //  System.out.println("Count: " + count);
}
4

2 に答える 2

0

文字を 1 つずつ受け入れたいので、countChars関数の外側に変数が必要になります。オブジェクトではなく静的関数のみを使用しているため、その変数も静的にする必要があります。したがって、次のようなものです。

private static int length = 0;

public static int countChars(char c) throws Exception {
  length++;
  //...
}

その後、メイン関数からも可変長にアクセスできます。

于 2013-10-24T21:24:56.343 に答える
0

Char1文字しか保持できません。AStringは、一連の文字全体を保持しています。

たまたま にStringは というメソッドがありlength()ます。;)

于 2013-10-24T21:25:19.370 に答える