2

try と catch を使用して例外を処理するプログラムを作成するよう求められました。ただし、実行すると、「無効な名前」が出力されるはずだったため、例外コードが反映されませんでした。誰かが理由を指摘できますか?誰かが私のコードを修正した場合も大歓迎です! ありがとう。

次の条件でプログラムを作成する必要があります。

javax.naming.InvalidNameException をインポートします。メソッドを記述 public void printName(String name) throws InvalidNameException name に空白がない場合、メソッドは InvalidNameException をスローする必要があります。テストするドライバーを作成します。

===============Code result=============
Enter your name: James Dean        
First name: James
Last name: Dean
Enter your name: Brian Smith
First name: Brian
Last name: Smith
Enter your name: RuthKnight
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
    at Name.printName(Name.java:33)
    at NameApp.main(NameApp.java:17)
==================Method============================
import javax.naming.InvalidNameException;

public class Name{

   public void printName(String name) throws InvalidNameException{

       String [] nameSplit = name.split(" ");
       String first = nameSplit[0];
       String last = nameSplit[1];

       System.out.println("First name: "+first);
       System.out.println("Last name: "+last);      
   }

}
======================Driver========================
import java.util.Scanner;
import javax.naming.InvalidNameException;


public class NameApp{

   public static void main(String[] args) {

      Name aa = new Name();
      Scanner console = new Scanner(System.in);
      try {
         boolean keepRunning= true;

         while(keepRunning){
            System.out.print("Enter your name: ");
            String in = console.nextLine();
            aa.printName(in);
         } 
      }
      catch(InvalidNameException e){
         System.out.println("invalid name");
      }
   }

}
4

6 に答える 6