Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改数组中的半特定值-Java_Java_Arrays - Fatal编程技术网

更改数组中的半特定值-Java

更改数组中的半特定值-Java,java,arrays,Java,Arrays,我想知道我是否可以得到一些关于java代码的快速帮助。我创建了一个数组,每个位置/座位都有一个特定的“价格”。我需要编写一个程序,要求用户选择座位或价格。我已经完成了查找用户输入选择的特定座位位置并将其替换为0的前半部分,但在获取用户所需座位价格并将其更改为0的后半部分,我遇到了麻烦。他们选择的价格有多个座位,所以我只需要随机选择一个,并将其更改为0。我将删去一堆代码,使其更易于阅读,但基本上我需要的帮助是在底部: Scanner in = new Scanner(System.in);

我想知道我是否可以得到一些关于java代码的快速帮助。我创建了一个数组,每个位置/座位都有一个特定的“价格”。我需要编写一个程序,要求用户选择座位或价格。我已经完成了查找用户输入选择的特定座位位置并将其替换为0的前半部分,但在获取用户所需座位价格并将其更改为0的后半部分,我遇到了麻烦。他们选择的价格有多个座位,所以我只需要随机选择一个,并将其更改为0。我将删去一堆代码,使其更易于阅读,但基本上我需要的帮助是在底部:

Scanner in = new Scanner(System.in);

    String seat = "";
    String price = "";

    int[][] seating = new int[][]
        {
          { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 },
          { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 },
          { 10, 10, 20, 20, 20, 20, 20, 10, 10, 10 },
          { 10, 10, 20, 20, 20, 20, 20, 10, 10, 10 },
          { 10, 10, 20, 20, 20, 20, 20, 10, 10, 10 },
          { 10, 10, 20, 20, 30, 30, 20, 20, 10, 10 },
          { 20, 20, 30, 30, 40, 40, 30, 30, 20, 20 },
          { 20, 30, 30, 40, 50, 50, 40, 30, 30, 20 },
          { 30, 40, 50, 50, 50, 50, 50, 50, 40, 30 },

        };
    System.out.println("\nHere is a map of the current seating:\n");
    printArray(seating);

    System.out.println("\nWould you like to pick a seat or a price?\n");
    String decision = in.nextLine();

    if(decision.equals("price")) 
        {
            System.out.println("\nWould you like to pay 10, 20, 30, 40, or 50 dollars?\n");
            int pickedPrice = in.nextInt();
            //HELP HERE //replace a random seat with the selected price to 0 in the array

        }

我只是在万不得已的情况下才来到这里,因为我到处找了,找不到任何帮助。提前谢谢,我真的很感激

这里有几个选项。我将考虑以下两个问题:

  • 随机选择一个项目并检查它是否符合您的条件。如果没有,选择另一个
  • 制作另一个仅包含满足条件的元素的列表,然后随机选择一个
如果您选择第一个选项,它看起来会像这样

do {
    Random generator = new Random(); 
    int row = generator.nextInt(seating.length);
    int seat = generator.nextInt(seating.length);
} while(seating[row][seat] != pickedPrice);

seating[row][seat] = 0;
当然,如果除了一个座位外,其他座位都坐满了,这种方法就会变得效率低下。如果您选择处理第二个选项,则效率会更高,但代码会更复杂

ArrayList<Point> matches = new ArrayList<>();
for(int row = 0; row < seating.length; row++) {
    for(int seat = 0; seat < seating[0].length; seat++) {
        if(seat == pickedPrice)
            matches.add(new Point(row, seat));
    }
}

Random generator = new Random();
Point p = matches.get(generator.nextInt(matches.size()));
seating[p.x][p.y] = 0;
ArrayList matches=new ArrayList();
对于(int row=0;row
它必须有多随机?难道你不能像现在一样遍历数组来打印它,然后在10、20、30、40或50的第一个实例中,将该数组变为0并更新全局副本吗?下一次,它只选择下一个可用的10、20、30、40或50。基本计划:(1)定义一个包含两个成员的简单班级座位,“行”和“座位号”。(2) 声明
ArrayList
a
并将其初始化为空。(3) 使用双环穿过
座椅
。每次价格与用户价格匹配时,将座位的“行”和“座位号”添加到
a
。(4) 使用
a.size()。(5) 使用
a.get
获取随机数的
Seat
。这将给你一排和座位号,然后我想你可以做剩下的事情。@ajb修正。抢手货