0

メイン メソッドが 100% 正常に動作するようには見えません。それは良いですが、ループの問題を修正する必要があります。

私の主な目標は、ユーザーが1以上の数字を入力するとプログラムにメソッドpathCalc()を繰り返しさせ、0を入力するとプログラムを終了させることでした。ただし、ユーザーが1以上を入力してプログラムを繰り返すと、プログラムは繰り返されますが、繰り返すか再度終了するかをユーザーに尋ねるところまで来て、ユーザーが終了するために 0 を入力すると、プログラムは終了する代わりにメソッド pathCalc() を繰り返します。

ユーザーが>= 1を入力してメソッドを繰り返すか、0を入力して終了するように、メソッドを繰り返した後にこれを機能させるにはどうすればよいですか?

    import java.util.Scanner;

      public class AssignmentArrays{
         static int[] data = new int [6];

            public static void getIDs(){

               Scanner seg = new Scanner(System.in);

               int[] data = new int [6];
               data[0] = 0;
               data[1] = 0;
               data[2] = 0;
               data[3] = 0;
               data[4] = 0;
               data[5] = 0;

              /* Segment values */



               System.out.println("Enter cost for segment 0:");
               data[0] = seg.nextInt();

               System.out.println("Enter cost for segment 1:");
               data[1] = seg.nextInt();

               System.out.println("Enter cost for segment 2::");
               data[2] = seg.nextInt();

               System.out.println("Enter cost for segment 3:");
               data[3] = seg.nextInt();

               System.out.println("Enter cost for segment 4:");
               data[4] = seg.nextInt();

               System.out.println("Enter cost for segment 5:");
               data[5] = seg.nextInt();

   }

     public static void pathCalc(){     

     /* Path inputs */

     Scanner node1 = new Scanner(System.in);


     int pathCost;

     System.out.println("Enter ID of segment 0 of path:");
     int node1value = node1.nextInt();

     System.out.println("Enter ID of segment 1 of path:");
     int node2value = node1.nextInt();

     System.out.println("Enter ID of segment 2 of path:");
     int node3value = node1.nextInt();

     /* Path cost calculation */

     pathCost = data[node1value] + data[node2value] + data[node3value];
     System.out.println("The cost of the trip is: $" + pathCost);
     }

     public static void main(String[] args){
      getIDs();
      pathCalc();
      System.out.println("Enter 0 to exit or any other number"+
                                        " to evaluate another path:");
         int choice;
         choice = end.nextInt();

         while(choice != 0){
         getIDs();
         pathCalc();
         System.out.println("Enter 0 to exit or any other number"+
                                        " to evaluate another path:");
         choice = end.nextInt();
         }
     }
}
4

2 に答える 2

1

choicewhile ループ内で tow 回を読んでいます。以下のように 1 つのインスタンスを移動します。

    getIDs();
    pathCalc();
    System.out.println("Enter 0 to exit or any other number"+
                                            " to evaluate another path:");
    int choice = end.nextInt();
    while(choice != 0){
         //getIDs();
         pathCalc();
         System.out.println("Enter 0 to exit or any other number"+
                                            " to evaluate another path:");
         choice = end.nextInt();
    }

また、余分なフラグは必要ありません。choice上記の状態でご使用ください。

ユーザーが最初に入力した場合、while ループは開始されません00ユーザーが後で入力すると、ループは自動的に終了します。

編集:プログラムを更新しました。

public class AssignmentArrays {
    static int[] data = new int[6];
    static Scanner seg;

    public static void getIDs() {
        int[] data = new int[6];
        data[0] = 0;
        data[1] = 0;
        data[2] = 0;
        data[3] = 0;
        data[4] = 0;
        data[5] = 0;

        /* Segment values */

        System.out.println("Enter cost for segment 0:");
        data[0] = seg.nextInt();

        System.out.println("Enter cost for segment 1:");
        data[1] = seg.nextInt();

        System.out.println("Enter cost for segment 2::");
        data[2] = seg.nextInt();

        System.out.println("Enter cost for segment 3:");
        data[3] = seg.nextInt();

        System.out.println("Enter cost for segment 4:");
        data[4] = seg.nextInt();

        System.out.println("Enter cost for segment 5:");
        data[5] = seg.nextInt();

    }

    public static void pathCalc() {
        int pathCost;

        System.out.println("Enter ID of segment 0 of path:");
        int node1value = seg.nextInt();

        System.out.println("Enter ID of segment 1 of path:");
        int node2value = seg.nextInt();

        System.out.println("Enter ID of segment 2 of path:");
        int node3value = seg.nextInt();

        /* Path cost calculation */

        pathCost = data[node1value] + data[node2value] + data[node3value];
        System.out.println("The cost of the trip is: $" + pathCost);
    }

    public static void main(String[] args) {
        seg = new Scanner(System.in);
        getIDs();
        pathCalc();
        System.out.println("Enter 0 to exit or any other number"
                + " to evaluate another path:");
        int choice;
        choice = seg.nextInt();

        while (choice != 0) {
            getIDs();
            pathCalc();
            System.out.println("Enter 0 to exit or any other number"
                    + " to evaluate another path:");
            choice = seg.nextInt();
        }
        seg.close();
    }
}
于 2012-11-17T06:46:25.400 に答える
0
if (choice == 0){ 
System.exit(0);
 }

直接終了するか、ループに入る前に選択を確認してください

于 2012-11-17T06:52:25.947 に答える