将输入数字与数组中的值进行比较

时间:2014-12-05 08:47:30

标签: java arrays methods

我做了一个程序来管理一个狗狗(狗舍,瑞典语) 我给它添加一条狗的可能性,列出尾巴长度或等于给定长度的每条狗,移除一只狗或停止程序。
当我必须列出所有寻找尾巴长度的狗时,我会遇到问题 我的程序中的方法称为listaHundarna(),我要求搜索最小尾部长度。 if语句给了我一个我无法解决的错误。

有人可以帮帮我吗?

第一类是狗(Hund),第二类是狗磅类(Kennel)。

洪德:

public class Hund {

    private String HundNamn;
    private String HundRas;
    private int HundÅlder;
    private double HundVikt;
    private double HundSvansLängd;
    private String tax = "tax";

    Hund(String namn, String ras, int ålder, double vikt, double svans){ //Skapa hundmetod som tar emot datan från super/main-klassen (Kennel.java);
    HundNamn = namn;
    HundRas = ras;
    HundÅlder = ålder;
    HundVikt = vikt;
    HundSvansLängd = svans;
    }


    public String toString() {
        return HundNamn+" "+HundRas+" "+HundÅlder+" years old "+HundVikt+" kg "+"tail lenght= "+HundSvansLängd;
        }

    public String getNamn() {
        return HundNamn;
        }


}

养犬:

public class Kennel {

static ArrayList<Hund> HundLista= new ArrayList<Hund>();
private static Scanner tangentbord = new Scanner(System.in);

    private static int val(String tal) {
        System.out.print(tal);
        return tangentbord.nextInt();
    }


    private static void kör() {
        for (;;) {
            Meny();
            switch (välja()) {
            case 1:
                läggTillHund();
                break;
            case 2:
                listaHundarna();
                break;
            case 3:
                taBortHund();
                break;
            case 4:
                avsluta();
                return;
            }
        }
    }

    private static void Meny() {
        System.out.println("Tryck 1 för att lägga till en hund");
        System.out.println("Tryck 2 för att lista hundarna");
        System.out.println("Tryck 3 för att ta bort en hund");
        System.out.println("Tryck 4 för att avsluta programmet");   
    }

    private static int välja() {
        return val("> ");
    }

    public static void läggTillHund(){
        Scanner sc=new Scanner (System.in);
        System.out.println("Hundens namn:");
        String namn = sc.nextLine();
        System.out.println("Hundens ras: ");
        String ras = sc.nextLine();
        System.out.println("Hundens ålder: ");
        int ålder=sc.nextInt();
        System.out.println("Hundens vikt: ");
        double vikt=sc.nextDouble();
        String tax = "tax";
        double svans;
        if (ras.equals(tax)) { 
            svans = 3.7;
            }
            else {
                svans = (ålder*vikt)/10;
            }
        System.out.println("Hundens svans är "+svans+"cm lång");
        Hund nyhund = new Hund(namn, ras, ålder, vikt, svans);
        HundLista.add(nyhund);  
    }


    public static void listaHundarna(){
        Scanner sc=new Scanner(System.in);
        System.out.println("Ange svanslängd:");
        double minstasvanslängd=sc.nextDouble();
        int h=0;
        while(h<HundLista.size()){
            if(HundLista.get(h)>minstasvanslängd){
                System.out.println(HundLista.get(h));
        }
        }
    }

    public static void taBortHund(){
        Scanner sc=new Scanner(System.in);
        System.out.println("Ange hundens namn:");
        String radera= sc.nextLine();
        for(int x=0;x<HundLista.size();x++){
            if (HundLista.get(x).equals(radera)){
                HundLista.remove(x);
                System.out.println("Hunden har tagits bort");
            }
            else{
                System.out.println("Hundens namn är inte korrekt");
            }


        }
    }

    public static void avsluta(){
    System.out.println("Programmet avslutas");

    }

    public static void main(String[] args) {
    kör();
    avsluta();
    }

}

3 个答案:

答案 0 :(得分:2)

您正在尝试将Hund对象与双变量进行比较:

if(HundLista.get(h)>minstasvanslängd){

您应该将Hund对象的相关属性与minstasvanslängd进行比较。

if(HundLista.get(h).getTailLength()>minstasvanslängd){

其中getTailLength()应该替换为返回狗尾长的方法。

答案 1 :(得分:1)

if(HundLista.get(h)>minstasvanslängd)

在这里,您尝试将Hund类型的对象与double进行比较。这应该是

if(HundLista.get(h).getSvansLängd() > minstasvanslängd)

前提是您在getSvansLängd()类中添加了一个getter Hund,如下所示:

public class Hund {

    private String HundNamn;
    private String HundRas;
    private int HundÅlder;
    private double HundVikt;
    private double HundSvansLängd;
    private String tax = "tax";

    Hund(String namn, String ras, int ålder, double vikt, double svans){ //Skapa hundmetod som tar emot datan från super/main-klassen (Kennel.java);
    HundNamn = namn;
    HundRas = ras;
    HundÅlder = ålder;
    HundVikt = vikt;
    HundSvansLängd = svans;
    }


    public String toString() {
        return HundNamn+" "+HundRas+" "+HundÅlder+" years old "+HundVikt+" kg "+"tail lenght= "+HundSvansLängd;
        }

    public String getNamn() {
        return HundNamn;
        }

    public double getSvansLängd() {
        return HundSvansLängd;
    }
}

答案 2 :(得分:1)

if(HundLista.get(h)>minstasvanslängd){

HundLista.get(h)返回一个Hund对象而minstasvanslängd是一个double,你不能使用原始运算符“&gt;”比较一个Object和一个原语。 if条件应为

if(HundLista.get(h).HundSvansLängd>minstasvanslängd){

假设HundSvansLängd是公开的。