【问题标题】:After calling a method, I'm getting a null value for my array list [closed]调用方法后,我的数组列表得到一个空值 [关闭]
【发布时间】:2013-12-20 14:29:34
【问题描述】:
showMainMenu();
            mainChoice = input.nextInt();

            switch(mainChoice){

            case 1 :    showConcertCategories();
                        concertCategories = input.nextInt();

                        switch(concertCategories){

                        case 1 :    showMusical();
                                    musical = input.nextInt();

                                    switch(musical){

                                    case 1 :    showMyFairLady();
                                                myFairLady = input.nextInt();

                                                switch(myFairLady){

                                                case 1 :    System.out.print("Please input number of tickets:");
                                                            title = "MY FAIR LADY";
                                                            date = "20/01/08";
                                                            tickets = input.nextInt();
                                                            totalPrice = 90 * tickets;

                                                            System.out.println("\nBooking Information <All concerts begin at 8pm>");
                                                            System.out.println("-----------------------------------------------");
                                                            System.out.println("Concert:        MY FAIR LADY");
                                                            System.out.println("Length:         135 minutes");
                                                            System.out.println("Date:           20/01/08");
                                                            System.out.println("Number of tickets:  "+tickets);
                                                            System.out.println("Price per ticket:   $90.00");
                                                            System.out.println("Total:          $"+fmt.format(totalPrice));
                                                            System.out.println("-----------------------------------------------");
                                                            System.out.println("<1>Confirm");
                                                            System.out.println("<2>Redo");
                                                            System.out.print("Please select your choice<1-2>:");
                                                            confirmRedo = input.nextInt();

                                                            switch(confirmRedo){

                                                            case 1 :    System.out.println("\n************************************");
                                                                        System.out.println("* Your ticket(s) is/are confirmed. *");
                                                                        System.out.println("************************************");
                                                                        confirmation[0]=""+title;
                                                                        confirmation[1]=""+date;
                                                                        confirmation[2]=""+tickets;
                                                                        confirmation[3]=""+totalPrice;
                                                                        break;

                                                            case 2 :    showRedo();
                                                                        break;

                                                            default:    System.out.println("\nPlease select a valid choice.");
                                                            }
                                                }
                                                break;

                                    default:    System.out.println("\nPlease select a valid choice.");
                                    }
                                    break;

                        case 2 :    showClassical();
                                    break;

                        case 3 :    showPopMusic();
                                    break;

                        case 4 :    break;

                        default:    System.out.println("\nPlease select a valid choice.");
                        }
                        break;

            case 2 :    System.out.println("\nThank you for using this service.\n");
                        System.out.println("Concert             Date            Tickets         Total(S$)");
                        System.out.println("-----------         --------        ---------       -----------");
                        System.out.println(""+confirmation[0]+"         "+confirmation[1]+"         "+confirmation[2]+"         "+confirmation[3]);
                        break;

            default:    System.out.println("\nPlease select a valid choice.");
            }

大家好。我的作业代码有问题。

基本上,我的任务是创建一个订票程序,在您选择所需选项并退出主菜单后,它会显示您已确认的订票摘要。

我遇到问题的部分在于 Redo 选项,因为在调用 showRedo(); 后我没有得到任何值;

谁能帮帮我?

【问题讨论】:

  • “我没有得到任何价值”——这是什么意思?
  • 尽量将代码缩减为显示问题的最小摘录,没有人愿意阅读那么多代码并为您弄清楚发生了什么
  • 你能更清楚地解释你的问题吗?具体来说,“调用 showRedo() 后我没有得到任何价值”是什么意思?没有在哪里获得价值?您希望看到什么,它与您看到的有什么不同?
  • 哇,这么多代码。你能给我们一个SSCCE以便更容易帮助你吗?
  • 好的,我已经切换到 switch-case 方法,希望对您有所帮助。 “showRedo”基本上从“showConcertCategories”开始整个过程​​,一直到我点击退出。但是,在“redo-ing”之后,数组值显示为 null。

标签: java arrays methods arraylist


【解决方案1】:

你的 showRedo()

    concertCategories = input.nextInt();

    if(concertCategories==1){

仅在等于 1 时处理输入。您没有处理输入 2 和 3 的案例。

您还应该考虑使用 Java Switch 语句,而不是这个讨厌的大 if-else 阶梯。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

【讨论】:

  • 如果只有 1-3 个选项 if 语句会很好,如果将来可能有更多项目,那么切换就是要走的路。恕我直言,问题在于嵌套级别。我会通过拥有一个显示信息和子方法的数据库来处理每个子选择来解决它。它会干掉很多代码。
  • @yonitdm 这种结构的方式存在/很多/的问题,但我确信这是对 java 的更多介绍类,我认为这无助于让他不知所措这一点。
  • 我在回复之前权衡了一下(因此作为评论而不是答案)。使用 DRY 代码的初学者的好处是它使跟踪和调试比一堵墙更容易。如果没有其他更改,更改为 switch 不会改进代码。我说从年轻开始:)
  • 我已经切换到 switch-case 但我不太明白你的解决方案...
  • @shinichi 您的 showRedo() 方法现在似乎从您的问题中消失了。但我的观点是,在您的 showRedo() 方法中,除了值 1 之外,您没有处理任何输入。如果用户输入 2 或 3,则没有代码可以对这些值进行操作。一切都会失败。
猜你喜欢
  • 2021-11-25
  • 2021-11-19
  • 1970-01-01
  • 2014-10-18
  • 2023-01-01
  • 2020-05-09
  • 2018-06-25
  • 1970-01-01
  • 2013-01-11
相关资源
最近更新 更多