簡體   English   中英

比較輸入數字與數組中的值

[英]Compare input number to a value in an array

我編寫了一個程序來管理狗(狗窩,瑞典語)。
我可以添加一條狗,列出每條尾巴長度大於或等於給定長度的狗,刪除一條狗或停止程序。
我必須列出所有尋找尾巴長度的狗時遇到問題。
我程序中的方法稱為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();
    }

}

您正在嘗試將Hund對象與double變量進行比較:

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

您應該將Hund對象的相關屬性與minstasvanslängd進行minstasvanslängd

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

其中getTailLength()應該替換為返回狗尾巴長度的方法。

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

在這里,您嘗試將Hund類型的對象與double類型進行比較。 這應該是

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

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

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;
    }
}
if(HundLista.get(h)>minstasvanslängd){

HundLista.get(h)返回一個Hund對象,而minstasvanslängd是一個double,您不能使用基本運算符“>”比較對象和基本對象。 如果條件應為

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

假設HundSvansLängd是公開的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM