【问题标题】:JAVA if statement with array not working带有数组的JAVA if语句不起作用
【发布时间】:2014-04-12 07:02:54
【问题描述】:

我正在尝试构建一个书票系统,但我的代码无法正常工作,没有错误只是我预期的结果无法得到 这是我的代码,谁能告诉我我的代码哪里出了问题?

 public class Train  {
 public static void book(){

 int dest,sno;
 char[] seat1=new char [9];

 Integer Tid=1;

 Scanner sc= new Scanner(System.in);
 Scanner sc2=new Scanner(System.in);
 for(int i=0; i<9; i++)
{
    seat1[i]='A';
}
 System.out.println("Where do you want to go?");
  System.out.println("1. Main Entrerance to Night Safari");
  System.out.println("2. Main Enterance to River Safari");
  System.out.println("3. River Safari to Main Enterance");
  dest=sc.nextInt();
if (dest==1 && Tid !=null)
  {
System.out.println("_1"+seat1[0]+"_|_2"+seat1[1]+"_|_3"+seat1[2]+"_");
  System.out.println("_4"+seat1[3]+"_|_5"+seat1[4]+"_|_6"+seat1[5]+"_");     
  System.out.println("_7"+seat1[6]+"_|_8"+seat1[7]+"_|_9"+seat1[8]+"_");
  System.out.println("Enter seat number to select seat:");
  sno=sc.nextInt();

  if(sno>=1 && sno<=9)
{
    if(seat1[sno-1]!='B')
    {

        seat1[sno-1]='B';

        book();//here is working, it will go back again but when I re enter book(); and select dest1 agn it doesn't changed selected sno to B
    }

    else
    {
        System.out.println("Seat Already Booked, Choose Another ");

       book();
    }

}
}

else
{
    System.out.println("Invalid Seat Number, Select Again ");

    book();
}
}
}

输出如我预期的那样显示

1A|_2A_|3A _4A_|5A|_6A_ 7A|_8A_|9A 但是当我选择一个座位并再次返回时,它并没有像我预期的那样将所选座位从 A 更改为 B

【问题讨论】:

    标签: java arrays if-statement


    【解决方案1】:

    轻松修复。您将递归方法与方法book() 一起使用。您希望编辑数组seat1,但每次调用book() 方法时,都会使用初始值重新创建数组。

    解决方法是在调用第一个 book() 方法之前创建另一个方法,如下所示:

    public static void initArray() {
         for(int i=0; i<9; i++)
         {
            seat1[i]='A';
         }
    }
    

    然后在book方法中删除数组的创建。

    注意:您必须通过将private static char[] seat1=new char [9]; 放在public class Train { 下,使数组char[] seat1=new char [9]; 成为类的属性

    更新: 整个课程更新:

    package javaapplication19;
    
    import java.util.Scanner;
    
    public class Train {
    
        static char[] seat1 = new char[9];
    
        public static void book() {
    
            int dest, sno;
    
            Integer Tid = 1;
    
            Scanner sc = new Scanner(System.in);
            Scanner sc2 = new Scanner(System.in);
    
            System.out.println("Where do you want to go?");
            System.out.println("1. Main Entrerance to Night Safari");
            System.out.println("2. Main Enterance to River Safari");
            System.out.println("3. River Safari to Main Enterance");
            dest = sc.nextInt();
            if (dest == 1 && Tid != null) {
                System.out.println("_1" + seat1[0] + "_|_2" + seat1[1] + "_|_3" + seat1[2] + "_");
                System.out.println("_4" + seat1[3] + "_|_5" + seat1[4] + "_|_6" + seat1[5] + "_");
                System.out.println("_7" + seat1[6] + "_|_8" + seat1[7] + "_|_9" + seat1[8] + "_");
                System.out.println("Enter seat number to select seat:");
                sno = sc.nextInt();
    
                if (sno >= 1 && sno <= 9) {
                    if (seat1[sno - 1] != 'B') {
    
                        seat1[sno - 1] = 'B';
    
                        book();//here is working, it will go back again but when I re enter book(); and select dest1 agn it doesn't changed selected sno to B
                    } else {
                        System.out.println("Seat Already Booked, Choose Another ");
    
                        book();
                    }
    
                }
            } else {
                System.out.println("Invalid Seat Number, Select Again ");
    
                book();
            }
        }
    
        public static void init() {
            for (int i = 0; i < 9; i++) {
                seat1[i] = 'A';
            }
        }
    }
    

    它给出以下输出:

    运行:

    你想去哪里?

    1. 夜间野生动物园主入口

    2. 河川生态园主入口

    3. River Safari 到主入口

    1

    1A|_2A_|3A

    4A|_5A_|6A

    7A|_8A_|9A

    输入座位号选择座位:

    2

    你想去哪里?

    1. 夜间野生动物园主入口

    2. 河川生态园主入口

    3. River Safari 到主入口

    1

    1A|_2B_|3A

    4A|_5A_|6A

    7A|_8A_|9A

    输入座位号选择座位:

    这不是你想要的吗?

    【讨论】:

    • Thx man =D 现在 B 出现了,但 A 不见了 _1B_|_2B_|_3 _
    • 亚亚,非常感谢!!当我将初始数组放在 book() 方法的上方时,你能帮我理解为什么会这样吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多