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