首页 > 解决方案 > 我在使用 JOptionPane 和 if/else 语句时遇到问题

问题描述

我在使用 JOptionPane 时遇到问题。我的程序应该问用户一个问题,如果他们回答 Y 则继续下一个问题。但如果他们回答 N,它会问另一个问题。我的问题是当用户用 N 回答时,它只是转到 Y 问题。它基本上按照提问的顺序移动,而不是遵循 if-else 语句的参数。这是我的代码:

   import javax.swing.JOptionPane;
    
    public class Helper2 {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            helpMe(); 
        }
        
        public static void helpMe(){
            String ans = JOptionPane.showInputDialog("Does you car turn over? (Y/N)"); 
            if (ans.equalsIgnoreCase("Y")){
                JOptionPane.showInputDialog("Does it run rough? (Y/N)"); 
                if (ans.equalsIgnoreCase("Y")){
                    JOptionPane.showInputDialog("Did you buy cheap gas (Y/N)");
                } else if (ans.equalsIgnoreCase("N")){
                    JOptionPane.showInputDialog("Does it stop poorly? (Y/N)");
                }
    
                
            }else if (ans.equalsIgnoreCase("N")) {
                JOptionPane.showMessageDialog(null, "Your battery is dead");
                
            }else {
                JOptionPane.showMessageDialog(null, "ERROR"); 
            }
            
            
        }
        }

标签: javaif-statementjoptionpane

解决方案


你并没有改变ans每个问题的价值。尝试这样的事情:

import javax.swing.JOptionPane;

public class Helper2 {
    public static void main(String[] args) {
        helpMe();
    }

    public static void helpMe() {
        String ans = JOptionPane.showInputDialog("Does you car turn over? (Y/N)");
        if (ans.equalsIgnoreCase("Y")) {
            ans = JOptionPane.showInputDialog("Does it run rough? (Y/N)");
            if (ans.equalsIgnoreCase("Y")) {
                ans = JOptionPane.showInputDialog("Did you buy cheap gas (Y/N)");
            } else if (ans.equalsIgnoreCase("N")) {
                ans = JOptionPane.showInputDialog("Does it stop poorly? (Y/N)");
            }


        } else if (ans.equalsIgnoreCase("N")) {
            JOptionPane.showMessageDialog(null, "Your battery is dead");

        } else {
            JOptionPane.showMessageDialog(null, "ERROR");
        }
    }
}

推荐阅读