将输入数字与数组中的值进行比较
我制作了一个程序来管理dogpound(狗窝,瑞典语)。
我给它添加一条狗的可能性,列出每条尾巴长度等于或大于给定长度的狗,移除狗或停止该程序。
我有问题,当我必须列出所有的狗寻找他们的尾巴长度。
我的程序中的方法被称为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();
}
}
if(HundLista.get(h)>minstasvanslängd){
HundLista.get(H)返回一个对象洪特和minstasvanslängd是双,您不能使用基本运算符“>”来比较对象和基元。 if条件应该是
if(HundLista.get(h).HundSvansLängd>minstasvanslängd){
假设HundSvansLängd是公开的。
谢谢我写的,它部分解决了这个问题。现在我得到的是,假设我加了两条狗,第一条尾巴长3厘米,第二条长5厘米,当我搜寻尾巴长至少2厘米的狗时,结果是无限的包含有关我添加的第一只狗的信息的列表循环...我做错了什么? – 2014-12-05 09:04:03
这是因为“h”没有变化,它保持等于零。如果(HundLista.get(h)> minstasvanslng))System.out.println(HundLista.get(h));' – Moses 2014-12-05 09:35:47
i(h ++
您正试图以比较洪特对象为双变量:
if(HundLista.get(h)>minstasvanslängd){
您应该比较的相关属性追踪对象minstasvanslängd
。
if(HundLista.get(h).getTailLength()>minstasvanslängd){
其中getTailLength()
应该用返回狗的尾部长度的方法替换。
和我应该写什么呢? – 2014-12-05 08:53:29
@AndreaDossena查看编辑 – Eran 2014-12-05 08:55:05
谢谢我写的,它部分解决了这个问题。现在我得到的是,假设我加了两条狗,第一条尾巴长3厘米,第二条长5厘米,当我搜寻尾巴长至少2厘米的狗时,结果是无限的包含有关我添加的第一只狗的信息的列表循环...我做错了什么? – 2014-12-05 09:10:29
if(HundLista.get(h)>minstasvanslängd)
在这里,您尝试Hund
类型的对象比作double
。这应该是
if(HundLista.get(h).getSvansLängd() > minstasvanslängd)
只要你在Hund
类添加一个getter 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;
}
}
你会得到什么错误? – 2014-12-05 08:50:53