车搜索java

时间:2018-04-04 19:04:48

标签: java arrays sorting search binary-search

在我的一个课程中,我们创建了一个程序,可以随机创建10辆价格和星级的汽车。现在,程序创建了10个对象,然后创建了另一个与10比较的对象。它按星级搜索,按星级评分10,然后对10个对象进行二分搜索。我一直试图通过在每个对象中添加汽车制造商名称来改进它,但一直搞乱程序。该计划有两个班级

import java.util.*;
import java.util.Scanner;
 public class Sorter{
    static Car [] ary; // declare
    final static int NUM_CARS = 10;
    public static void main() {
        //Scanner rating = new Scanner(System.in);
        //int r = rating.nextInt();
        Car key = new Car();
        ary = new Car[NUM_CARS]; // initialize
        int i;
        int position;
        for (i=0; i<NUM_CARS; i++) {
            ary [ i ] = new Car();
        }
        System.out.println("Unsorted:");
        System.out.println(Arrays.toString(ary));
        System.out.println("Sequential search for " + key);
        ary[0].reset();
        position = sequentialSearch(key)+1; //add one to the index position to display the position on screen that the user's desired search is first found
        System.out.println("Total comparisons: " 
            + ary[0].getAllCount());
        System.out.println("Found a position: " +position);

        System.out.println();

        System.out.println("Sorted:");
        ary[0].reset();
        Arrays.sort(ary);
        System.out.println("Total comparisons: " 
            + ary[0].getAllCount());
        System.out.println(Arrays.toString(ary));
        System.out.println("Binary search for " + key);
        ary[0].reset();
        position = binarySearch(key)+1; //add one to the index position to display the position on screen that the user's desired search is first found
        System.out.println("Found a position: " +position);
        System.out.println("Total comparisons: " 
            + ary[0].getAllCount());
    }

    public static int binarySearch (Car keyCar) {
        return Arrays.binarySearch(ary,keyCar);
    }
    public static int sequentialSearch (Car keyCar) {
        int pos = -1;
        int i;
        int answer;
        for (i=0; i<ary.length; i++) {
            answer = ary[i].compareTo(keyCar); 
            if (answer==0) {
                pos = i;
                break;
            }
        }
        return pos;
    }
}

第二课

import java.util.*;
/**
 * in class work
 */
public class Car implements Comparable<Car> {
    // instance variables - replace the example below with your own
    int stars;
    double price;
    String name [] = {"Ford", "Dodge", "Chevrolet", "Honda", "Toyota", "VW", "Hyundai"};
    int  myCounter;
    static int allCounter;
    /**
     * Constructor for objects of class Sorter
     */
    public Car() {
        Random generator = new Random ();
        price = generator.nextDouble()*50000 + 50000;

        stars = generator.nextInt(5)+1;
        reset();
    }
    public String toString()
    {
        return String.format("$%,7.0f(%d stars)",price,stars);
        //$ put dollar sign infront
        //up to 7 digits
        //, puts commas
    }
    /**
     * Resets counter to zero
     */
    public void reset(){
        myCounter=0;
        allCounter=0;
    }
    public int getMyCount() {
        return myCounter;
    }
    public int getAllCount() {
        return allCounter;
    }
    /**
     * @param  other A house to compare to.
     * @return  Returns 0 if they are equal
     */
    public int compareTo(Car other)
    {
        myCounter++;
        allCounter++;
        if (this.stars < other.stars) {
            return -1;
        } else if (this.stars> other.stars) {
            return +1;
        }
        return 0; // equals
    }
}

如何使对象显示价格,星级和制造商? 此外,我想做的另一件事但尚未尝试,这样用户可以输入他们想要的星级评级,并且它只会显示这些车。这部分是我想在时间到来时尝试的下一件事。

1 个答案:

答案 0 :(得分:1)

要将数据与对象相关联,需要在该对象的构造函数中存储该数据的变量。因此,要将制造商与每个汽车对象相关联,您必须在Car类的构造函数中添加String manufacturer或类似的变量。您似乎希望将manufacturer变量设置为String name []数组的随机元素。

要让汽车“显示”您刚创建的manufacturer变量,您必须修改汽车类中的toString()方法以打印manufacturer以及{{1 }和price