我有3个房间(将来可能会有更多的房间,但这是不相关的),所有房间都有不同数量的座位(假设这些是“房间”对象):
然后,我输入需要预订的座位数的值,然后我的代码将根据用户的输入自动为用户分配一个房间,其中包含“最适合”的房间或能够容纳最适合其需求的座位的最接近数量的房间。所以一些例子
(假设输入不会超过30)如果输入超过30,我会做其他事情,这与这个问题无关。
所以这是我的尝试:
returnValue = 0;
inputValue = 10; //can be anything, doesn't have to be 10
ArrayList<Room> rooms= new ArrayList<Room>(); //where each room is already in the array list identified by it's unique number
//assume getRoomNumber() returns the room number of the Room object
// assume getRoomSeats() returns the number of seats of a Room object
for (Room i: rooms){
if (i.getRoomSeats()==inputValue){
returnValue = i.getRoomNumber();
}
elif(i.getRoomSeats()<inputValue){//donothing}
elif(i.getRoomSeats()>inputValue){
returnValue = i.getRoomNumber;
}}}
这是我想要的最好的方式吗?
你可以这样做
import java.util.ArrayList;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
new Main().test();
}
void test() {
int inputValue = 22;
ArrayList<Room> rooms = new ArrayList<Room>(); // where each room is already in the array list identified by
rooms.add(new Room(10, 1));
rooms.add(new Room(20, 2));
rooms.add(new Room(30, 3));
Integer currentDifference = null;
Room roomWithMinimalDifference = null;
for (Room room : rooms) {
int difference = room.getRoomSeats() - inputValue;
System.out.println("room "+room.getRoomNumber()+" difference "+difference);
boolean roomFitsEnteredSeats = difference >= 0; //check if room fits the entered value
if(roomFitsEnteredSeats) {
if (currentDifference == null || difference < currentDifference) {
currentDifference = difference;
roomWithMinimalDifference = room;
}
}
}
if (roomWithMinimalDifference != null) {
System.out.println("found room" + roomWithMinimalDifference.getRoomNumber() + " seats "
+ roomWithMinimalDifference.roomSeats);
} else {
System.out.println("no room was found");
}
System.out.println("-----------------------");
//========== or use this with java >= 8
Room bestMatchingRoom = rooms.stream()
.sorted(Comparator.comparingInt(Room::getRoomSeats))
.filter(r -> r.getRoomSeats() >= inputValue)
.findFirst()
.orElse(null);
if (bestMatchingRoom != null) {
System.out.println("found room" + roomWithMinimalDifference.getRoomNumber() + " seats "
+ roomWithMinimalDifference.roomSeats);
} else {
System.out.println("no room was found");
}
}
class Room {
int roomSeats;
int roomNumber;
public Room(int roomSeats, int roomNumber) {
super();
this.roomSeats = roomSeats;
this.roomNumber = roomNumber;
}
public int getRoomSeats() {
return roomSeats;
}
public void setRoomSeats(int roomSeats) {
this.roomSeats = roomSeats;
}
public int getRoomNumber() {
return roomNumber;
}
public void setRoomNumber(int roomNumber) {
this.roomNumber = roomNumber;
}
}
}
问题内容: 我很难解决这个问题的解决方案。我正在尝试用Java开发一个程序,该程序需要一个数字,例如321,并找到数字的总和,在这种情况下为3 + 2 + 1 =6。我需要任何三个数字的所有数字将它们加在一起,并使用%剩余符号存储该值。这让我感到困惑,我想感谢任何人的想法。 问题答案: 输出量
问题内容: 我必须比较两个对象(不是)。比较它们的规范方法是什么? 我可以想到: 该运营商只比较基准,因此这将仅适用于较低的整数值的工作。但是也许自动装箱开始了…? 这看起来像一个昂贵的操作。是否以此方式计算出哈希码? 有点冗长… 编辑: 谢谢您的答复。尽管我现在知道该怎么办,但事实已分布在所有现有答案(甚至是已删除的答案)上,我也不知道该接受哪个答案。因此,我将接受最佳答案,即所有三种比较可能性
问题内容: 我正在尝试编写代码以比较两个数组。在第一个数组中,我输入了自己的数字,但是在第二个数组中,输入了输入文件中的数字。该数组的大小由文件中的第一个数字确定,而第一个数组的大小始终为10。两个数组以及数字的长度必须相同。 我的代码如下: 问题答案:
我正在处理一个程序,我想允许用户在提示时输入多个整数。我曾尝试使用扫描仪,但发现它只存储用户输入的第一个整数。例如: 输入多个整数:1 3 5 扫描仪将仅获取第一个整数1。是否有可能从一行中获取所有3个不同的整数,并在以后使用它们?这些整数是我需要根据用户输入操作的链表中数据的位置。我无法发布我的源代码,但我想知道这是否可行。
我有密码 但是当我在文本字段中输入字符时,它们会保持打印状态,直到我切换到另一个文本字段。我需要完全禁止字符输入,我的意思是当字符输入时,我需要删除字符,或者如果可能的话,以某种方式使字符甚至不出现以供听众处理,当然也不出现在文本字段中。我的意思是只有数字字符必须出现。