Java-查找给定值的数组元素?

Java-查找给定值的数组元素?,java,arrays,elements,Java,Arrays,Elements,在我的Java程序中,我模拟了一个停车场。假设有随机数目的汽车,比如说7辆。车辆编号1由值1引用,车辆2由值2引用,依此类推。每个汽车值都随机存储在表示停车场的数组中。数组的每个元素表示一个停车位。我试着写一个方法来实现以下功能:假设你想知道4号车的停车位。值“4”被传递给该方法,该方法将在数组中搜索该值。我希望该方法告诉我在数组的哪个元素中找到了值“4”。以下是我到目前为止对该方法的了解: public int findBayOfCar(int carNumber) { int ind

在我的Java程序中,我模拟了一个停车场。假设有随机数目的汽车,比如说7辆。车辆编号1由值1引用,车辆2由值2引用,依此类推。每个汽车值都随机存储在表示停车场的数组中。数组的每个元素表示一个停车位。我试着写一个方法来实现以下功能:假设你想知道4号车的停车位。值“4”被传递给该方法,该方法将在数组中搜索该值。我希望该方法告诉我在数组的哪个元素中找到了值“4”。以下是我到目前为止对该方法的了解:

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之后