0

ifわかりましたので、 ...else句を使用せずに、通常は 3 つのファイルのうち 1 つから読み込もうとしています。

問題を実行するだけScanner myScanner = new Scanner(new File("maze1.txt"));ですが、実行したい迷路をユーザーに選択してもらいたい

public class Main {
    private static Scanner myScanner;

    public static void main(String[] args) throws FileNotFoundException {

        System.out.println("Please Enter 1,2 or 3 to pick the different maze you would like being solved.");
        Scanner myScannerinput = new Scanner(System.in);



        int Mazenumber = myScannerinput.nextInt();

        if(Mazenumber == 1){
            Scanner myScanner = new Scanner(new File("maze1.txt"));
        }
        else if(Mazenumber == 2){
            Scanner myScanner = new Scanner(new File("maze2.txt"));
        }
        else if(Mazenumber == 3){
            Scanner myScanner = new Scanner(new File("maze3.txt"));
        }
        else{
            System.out.println("You did not choose one of the 3 mazes");
        }



        int numRows = myScanner.nextInt();
        int numCols = myScanner.nextInt();
        myScanner.nextLine();

        int startX = 0;
        int startY = 0;'

1、2、または 3 を入力して、解決したい別の迷路を選択してください。

Exception in thread "main" java.lang.NullPointerException
at Main.main(Main.java:33)
4

3 に答える 3

1

if 条件内で個々の新しい Scanner を作成しないでください。if 条件の前に 1 つの Scanner を作成し、好みに応じてファイルを割り当てます。

        int Mazenumber = myScannerinput.nextInt();
        Scanner myScanner =null;
        if(Mazenumber == 1){
            myScanner = new Scanner(new File("maze1.txt"));
        }
        else if(Mazenumber == 2){
            myScanner = new Scanner(new File("maze2.txt"));
        }
        else if(Mazenumber == 3){
            myScanner = new Scanner(new File("maze3.txt"));
        }
        else{
            System.out.println("You did not choose one of the 3 mazes");
        }
        if(myScanner!=null){
           int numRows = myScanner.nextInt();
           int numCols = myScanner.nextInt();
           myScanner.nextLine();
       }
于 2013-10-05T00:01:30.570 に答える
0

それ以外の

 int Mazenumber = myScannerinput.nextInt();

        if(Mazenumber == 1){
            Scanner myScanner = new Scanner(new File("maze1.txt"));
        }
        else if(Mazenumber == 2){
            Scanner myScanner = new Scanner(new File("maze2.txt"));
        }
        else if(Mazenumber == 3){
            Scanner myScanner = new Scanner(new File("maze3.txt"));
        }
        else{
            System.out.println("You did not choose one of the 3 mazes");
        }

使用する

Scanner myScanner;
int Mazenumber = 0;
do {
    System.out.println("Choose 1, 2 or 3");
    Mazenumber = myScannerinput.nextInt();
    if(Mazenumber >=1 && Mazenumber <=3) {
         String fileName = "maze"+Mazenumber+".txt";
        myScanner = new Scanner(new File(fileName));
    } else {
           System.out.println("You did not choose one of the 3 mazes");      
     }

} while(Mazenumber>3 && Mazenumber <1);

スレッド「メイン」での例外 java.lang.NullPointerException at Main.main(Main.java:33)

例外は、ブロックScanner myScanner内で宣言したためです。if-else

于 2013-10-04T23:58:38.273 に答える
0

if ブロック内で myScanner を定義して初期化するため、そこから出るとすぐに範囲外になります

于 2013-10-04T23:59:06.520 に答える