我做了一个程序来管理一个狗狗(狗舍,瑞典语)
我给它添加一条狗的可能性,列出尾巴长度或等于给定长度的每条狗,移除一只狗或停止程序。
当我必须列出所有寻找尾巴长度的狗时,我会遇到问题
我的程序中的方法称为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();
}
}
答案 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是公开的。