1

割り当ての場合、文字列を入力して反転する必要がありますが、文字列内の文字が文字、数字、または空白でない場合は、不正な文字例外がスローされます。私の教授は、メソッドの throw 句は必要ないと言っています。

これが私のコードです

import java.util.*;
import java.io.*;
public class reverse3
{
   public static void reverse(String x)
   {
      char j;
      String reversedString;
      for(int i = 0; i < x.length(); i++)
      {
         try
         {
           if(!Character.isDigit(x.charAt(i)) && !Character.isLetter(x.charAt(i)) && !Character.isWhitespace(x.charAt(i)))
         {
            throw ( new IllegalCharacterException("Illegal Character in String"));
         }//end if
         else if(Character.isDigit(x.charAt(i)) && Character.isLetter(x.charAt(i)) && Character.isWhitespace(x.charAt(i)))
         {
            j = x.charAt(i);
            j = reversedString.charAt(i - 1);
         }//end else if
       }//end try
     catch(IllegalCharacterException e)
     {
       System.out.println(e.getMessage());
     }//end catch
   }//end for loop
}//end method

 public static void main(String[] args)
 {
   Scanner keyboard = new Scanner(System.in);
   String s;
   System.out.println("Please enter a string");
   s = keyboard.next();
   reverse(s);
 }//end main
}//end class

15 行目と 23 行目でこのエラーが発生し続けます エラー: IllegalCharacterException を型に解決できません

4

2 に答える 2

4

探していると思いますIllegalArgumentException

new IllegalArgumentException("Illegal Character in String"));

メソッドに不正または不適切な引数が渡されたことを示すためにスローされます。


IllegalArgumentExceptionそれ以外の場合は、必要に応じて独自のクラスを定義できますが、メッセージをカスタマイズできるため、付加価値はありません。

public class IllegalCharacterException extends Exception {

    public IllegalCharacterException(String msg) {
        super(msg);
    }

}
于 2016-03-24T18:31:09.580 に答える
1

コードにelseもブロックが必要です。コードelse if部分では、一度に 3 つの型が一致しないためです。

そしてIllegal Character Exception、実際にIllegalArgumentExceptionです。実際の問題を指定したい場合は、 を使用できますIllegalArgumentException。一方、あなたも使うことができますException

于 2016-03-24T18:38:31.037 に答える