Java-查找给定值的数组元素?
在我的Java程序中,我模拟了一个停车场。假设有随机数目的汽车,比如说7辆。车辆编号1由值1引用,车辆2由值2引用,依此类推。每个汽车值都随机存储在表示停车场的数组中。数组的每个元素表示一个停车位。我试着写一个方法来实现以下功能:假设你想知道4号车的停车位。值“4”被传递给该方法,该方法将在数组中搜索该值。我希望该方法告诉我在数组的哪个元素中找到了值“4”。以下是我到目前为止对该方法的了解:Java-查找给定值的数组元素?,java,arrays,elements,Java,Arrays,Elements,在我的Java程序中,我模拟了一个停车场。假设有随机数目的汽车,比如说7辆。车辆编号1由值1引用,车辆2由值2引用,依此类推。每个汽车值都随机存储在表示停车场的数组中。数组的每个元素表示一个停车位。我试着写一个方法来实现以下功能:假设你想知道4号车的停车位。值“4”被传递给该方法,该方法将在数组中搜索该值。我希望该方法告诉我在数组的哪个元素中找到了值“4”。以下是我到目前为止对该方法的了解: public int findBayOfCar(int carNumber) { int ind
public int findBayOfCar(int carNumber)
{
int index = -1;
boolean found = false;
while (!found)
{
if (cars[index] == carNumber)
{
}
index++;
}
}
显然,这是行不通的,因为Java无法将cars[index](这是一个Car类型的数组)与carNumber(一个int)进行比较。我可以做些什么来纠正这一点?您应该引用
Car
对象来获取其编号:
public static int findBayOfCar(int carNumber, Car[] cars)
{
int index = -1;
boolean found = false;
while (!found && index < cars.length -1)
{
index++;
if (cars[index].getNumber() == carNumber)
{
found = true;
}
}
return found ? index : -1;
}
public static int findBayOfCar(int carNumber,Car[]cars)
{
int指数=-1;
布尔值=false;
而(!found&&index
您应该参考您的汽车
对象以获取其编号:
public static int findBayOfCar(int carNumber, Car[] cars)
{
int index = -1;
boolean found = false;
while (!found && index < cars.length -1)
{
index++;
if (cars[index].getNumber() == carNumber)
{
found = true;
}
}
return found ? index : -1;
}
public static int findBayOfCar(int carNumber,Car[]cars)
{
int指数=-1;
布尔值=false;
而(!found&&index
您在这么小的代码中出现了许多错误
while(!found)
这意味着您将继续搜索,直到找到某个内容,但是如果我们正在搜索的元素不在数组中,会发生什么情况?我们将获得臭名昭著的ArrayOutOfBoundsException,因为我们将尝试访问不存在的数组单元。解决方案:for(int i=0;i
,以便从开始运行到数组大小Found=true
并停止搜索public int findBayOfCar(int carNumber)
{
int foundAtBay = -1;
for (int i = 0; i < cars.length; i++)
{
if (cars[i].number == carNumber) // or whatever .Number or .number which identify the car number.
{
foundAtBay = i;
break;
}
}
return foundAtBay;
}
public int findBayOfCar(int carNumber)
{
int foundAtBay=-1;
对于(int i=0;i
您在这么小的代码中出现了许多错误
while(!found)
这意味着您将继续搜索,直到找到某个内容,但是如果我们正在搜索的元素不在数组中,会发生什么情况?我们将获得臭名昭著的ArrayOutOfBoundsException,因为我们将尝试访问不存在的数组单元。解决方案:for(int i=0;i
,以便从开始运行到数组大小Found=true
并停止搜索public int findBayOfCar(int carNumber)
{
int foundAtBay = -1;
for (int i = 0; i < cars.length; i++)
{
if (cars[i].number == carNumber) // or whatever .Number or .number which identify the car number.
{
foundAtBay = i;
break;
}
}
return foundAtBay;
}
public int findBayOfCar(int carNumber)
{
int foundAtBay=-1;
对于(int i=0;i一个简单的强力解决方案是LinearSearch
:
for(int i=0; i < your_array_length; i++){
if(cars[i] == carNumber){
return i;
}
}
return -1; //-1 represents that the car was not parked in any of the slots
for(int i=0;i一个简单的强力解决方案是LinearSearch
:
for(int i=0; i < your_array_length; i++){
if(cars[i] == carNumber){
return i;
}
}
return -1; //-1 represents that the car was not parked in any of the slots
for(int i=0;i
如果你的车只是数字,那么:
int[] cars = new int[] { 1, 2, 3 } ;
public int indexOf(int carNumber) {
return Arrays.binarySearch(cars, carNumber);
}
如果你的车是绳子,那么
String[] cars = new String[] { "car1", "car2", "car2" };
public int indexOf(int carNumber) {
return Arrays.asList(cars).indexOf("car" + carNumber);
}
如果你的车是物体,那么
Car[] cars = new Car[] { new Car(), new Car(), new Car() };
public Car indexOf(int carNumber) {
return IntStream.range(0, cars.length).filter(c -> carNumber == cars[c].number).mapToObj(i -> cars[i]).findFirst().orElse(null);
}
或者,对于普通循环:
Car[] cars = new Car[] { new Car(), new Car(), new Car() };
public int indexOf(int carNumber) {
for (int i = 0; i < cars.length; i++) {
if (cars[i].number == carNumber) {
return i;
}
}
return -1;
}
Car[]cars=新车[]{new Car(),new Car(),new Car()};
公共整数索引of(整数卡号){
对于(int i=0;i
如果你的车只是数字,那么:
int[] cars = new int[] { 1, 2, 3 } ;
public int indexOf(int carNumber) {
return Arrays.binarySearch(cars, carNumber);
}
如果你的车是绳子,那么
String[] cars = new String[] { "car1", "car2", "car2" };
public int indexOf(int carNumber) {
return Arrays.asList(cars).indexOf("car" + carNumber);
}
如果你的车是物体,那么
Car[] cars = new Car[] { new Car(), new Car(), new Car() };
public Car indexOf(int carNumber) {
return IntStream.range(0, cars.length).filter(c -> carNumber == cars[c].number).mapToObj(i -> cars[i]).findFirst().orElse(null);
}
或者,对于普通循环:
Car[] cars = new Car[] { new Car(), new Car(), new Car() };
public int indexOf(int carNumber) {
for (int i = 0; i < cars.length; i++) {
if (cars[i].number == carNumber) {
return i;
}
}
return -1;
}
Car[]cars=新车[]{new Car(),new Car(),new Car()};
公共整数索引of(整数卡号){
对于(int i=0;i
cars[index].getNumber()
如果你有一个getter方法。什么是“cars”类型。是它自己的班级吗?然后,您可以使用前面提到的getter方法或可以访问的公共变量。请发布您如何设置每个卡号值的代码,我们可能会提供帮助。cars[index].getNumber()
如果您有getter方法,“cars”类型是什么。是它自己的班级吗?然后,您可以使用前面提到的getter方法或可以访问的公共变量。请发布您如何设置每个卡号值的代码,我们可能会提供帮助。您不想返回找到的布尔值,您想返回找到汽车的间隔号。谢谢大家,它是固定的。您不想返回找到的布尔值,您想返回找到汽车的间隔号。谢谢大家,它是固定的。省略中断在之后返回,因为它不可访问。省略中断代码>在th之后