2017-10-10 116 views
0

因此,我目前正在编写一个程序,基本上要求用户输入并根据该输出计算总课程负载和费用。我将如何防止用户重复条目(在这个程序中使用JOptionPane和if语句)

但是我有点卡住了。我应该防止用户多次输入相同的课程编号,我似乎无法弄清楚。任何帮助,将不胜感激!

这是一小块我的代码:

 while (option == JOptionPane.YES_OPTION) { 
     if (!(typeOfStudent.equals("Online") || typeOfStudent.equals("On campus"))) { 
      JOptionPane.showMessageDialog(null, "Enter either 'Online' or 'On campus'"); 
      System.exit(0); 
     } 
      courseNumber = JOptionPane.showInputDialog("Enter the Course Number for the class you are taking(100/150/250/300): " + "\n"); 
      courseNum = Integer.parseInt(courseNumber); 

     if (!(courseNum == 100 || courseNum == 150 || courseNum == 250 || courseNum == 300)) { 
      JOptionPane.showMessageDialog(null, "Enter a valid course number (100/150/250/300)"); 
      System.exit(0); 
     } 
     if (courseNum == 100 && (typeOfStudent.equals("Online"))) { 
      totalNumCredits += credits100; 
      totalStudentFee += onlineStudentFee100; 

     } 
+0

请阅读[mcve]。不要只是在这里放下一些代码,并期望我们能够确定你的代码在做什么,以及如何偏离你的期望。 – GhostCat

+0

这是一个非常简单的问题,我简单地回答了一个空白问题。我提供了足够的代码,以便人们了解我正在尝试做什么。试图不用代码重载页面或获得比我需要的更多的方式。基于代码本身以及我之前的段落,很清楚代码正在做什么。虽然 – stgray

回答

1

维护那些已经由用户选择的课程列表:

List<Integer> courses = new ArrayList<>(); 

然后修改当前的代码检查过程已被选中或没有。

if (!(courseNum == 100 || courseNum == 150 || courseNum == 250 || courseNum == 300)) { 
      JOptionPane.showMessageDialog(null, "Enter a valid course number (100/150/250/300)"); 
      System.exit(0); 
     } 
     if(courses.contains(courseNum) { 
      JOptionPane.showMessageDialog(null, "It is an already selected course number"); 
      return; 
     } 
     courses.add(courseNum); 
     if (courseNum == 100 && (typeOfStudent.equals("Online"))) { 
      totalNumCredits += credits100; 
      totalStudentFee += onlineStudentFee100; 

     } 
+0

感谢,但仍然继续该计划。只是不断添加课程。认为它也会工作! – stgray

+1

您需要将建议的'courses'列表保存为实例成员,而不是您的处理程序方法中的局部变量。 – VHS

+1

啊,呃!谢谢,那肯定是照顾它的。你是一个拯救生命的人。 – stgray