私は3匹の犬のうちArraylist
を持っています。私はリストにもっと犬を登録し、toString
関数を呼び出すことによってそれらをリストアップし、犬の年齢を1つ上げ、リストから犬を取り除くことができます。最後の2つのものを使用している限り、remove()
とincreaseAge()
はどちらも動作しますが、他のコマンドを使用すると直ちに犬を見つけることができず、犬を見つけることができず、与えられた名前で犬を見つける。だからそれは奇妙なremove()
とincreaseAge()
です。最初の入力後にこれらの機能が動作しないのは何ですか?
メインコード:
public class DogTest {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
ArrayList<Dog> Dogs = new ArrayList<Dog>();
DogFunctions DF = new DogFunctions();
Dogs.add(new Dog("Peggy", "Labrador", 9, 30));
Dogs.add(new Dog("Max", "Tax", 4, 13));
Dogs.add(new Dog("Sanna", "Schäfer", 7, 25));
Boolean loop = true;
while(loop){
String input = keyboard.nextLine();
switch (input){
case "Register":
Dogs.add(DF.register());
break;
case "IncreaseAge":
Dogs.get(DF.returnDogIndex(Dogs, "Input Message", "Output Message")).increaseAge();
break;
case "List":
DF.list(Dogs);
break;
case "Remove":
Dogs.remove(DF.returnDogIndex(Dogs, "Input Message", "Output Message"));
break;
case "Quit":
loop = false;
break;
}
}
keyboard.close();
}
}
コードの機能のために:
import java.util.ArrayList;
import java.util.Scanner;
public class DogFunctions {
private Scanner keyboard = new Scanner(System.in);
public Dog register(){
System.out.println("Namn:");
String name = keyboard.nextLine();
System.out.println("Ras:");
String breed = keyboard.nextLine();
System.out.println("Ålder:");
int age = keyboard.nextInt();
System.out.println("Vikt:");
double weight = keyboard.nextDouble();
Dog d = new Dog(name, breed, age, weight);
System.out.println("Hund tillagd i registret");
return d;
}
public void list(ArrayList<Dog> Dogs){
System.out.println("Ange svanslängd:");
double input = keyboard.nextDouble();
if(input == 0){
for (int i = 0; i < Dogs.size(); i++){
System.out.println(Dogs.get(i).toString());
}
}
else{
for (int i = 0; i < Dogs.size(); i++){
if(Dogs.get(i).getTailLenght() >= input){
System.out.println(Dogs.get(i).toString());
}
}
}
}
public int returnDogIndex(ArrayList<Dog> Dogs, String inputMessage, String outputMessage){
System.out.println(inputMessage);
String input = keyboard.nextLine();
for(int i = 0; i < Dogs.size(); i++){
if(input.equals(Dogs.get(i).getName())){
System.out.println(outputMessage);
return i;
}
}
return -1;
}
}
それは私がと間違って何かだと思い、この最後の関数 "returnDogIndex" です。 Dogクラスのための
コード:あなたが戻ってきている-1あなたは犬を見つけていない指標として
public class Dog {
private String breed, name;
private int age;
private double weight, tailLength;
public Dog(String name, String breed, int age, double weight) {
this.name = name;
this.breed = breed;
this.age = age;
this.weight = weight;
calcTailLength();
}
public void calcTailLength(){
if (breed.toLowerCase().equals("tax")) {
tailLength = 3.7;
}
else {
tailLength = (age*weight)/10;
}
}
public String toString() {
return name + " är en " + age + " år gammal " + breed + " som väger " + weight + " kg och har en svanslängd på " + tailLength;
}
public String getName() {
return name;
}
public void increaseAge(){
age++;
calcTailLength();
}
public double getTailLenght(){
return tailLength;
}
}
? "リスト"と "削除"? – Olof
て申し訳ありません
–私はそれらがすべて欲しいです、彼らは割り当ての一部なので。しかし、以前に言及されていないコマンドが入力された後は、 "Remove"と "Increase Age"は機能しません。 – Olof