2015-12-08 4 views
-6

Вот мой код прямо сейчас. Я действительно просматривал всю вещь, но ханжества ради моей жизни узнать, где проблема casues код не работать в мою пользу по адресу:Когда пользователь вводит «неправильно», скажите ему

import java.util.ArrayList; 
import java.util.Scanner; 

public class DogGompundTest { 
    public static void main(String[] args) { 
     boolean dogFound = false; 
     boolean toEnd = false; 
     Scanner keyboard = new Scanner(System.in); 
     ArrayList<Dog> dogRegister = new ArrayList<Dog>(); 

     //Other dogs in program 
     Dog d2 = new Dog("Mira", "Miniature Schnauzer", 1, 8.0, 0.8); 
     dogRegister.add(d2); 
     Dog d3 = new Dog("Jack", "Jack Russell", 3, 6.0, 1.8); 
     dogRegister.add(d3); 
     Dog d4 = new Dog("Charlie", "Pug", 5, 5.0, 2.5); 
     dogRegister.add(d4); 
     Dog d5 = new Dog("Max", "Dachshund", 9, 5.0, 3.7); 
     dogRegister.add(d5); 
     Dog d6 = new Dog("Bingo", "Golden Retriever", 5, 12.0, 6.0); 
     dogRegister.add(d6); 

     System.out.println("Name - Race - Age - Weight - Taillength: " + dogRegister); 

     while (toEnd == false) { 
      System.out.println(
       "\nWhat would you like to do? \n Press 1 to register a dog. \n Press 2 to get a " + 
        "look at the taillengths of the dogs. \n Press 3 to delete a dog from " + 
        "the register.\n Press 4 to quit."); 
      int command = keyboard.nextInt(); //Alternatives stored in "command" 
      keyboard.nextLine(); 
      switch (command) { //Execute chosen command in switch-statement 
       case 1: //User registers a dog 
        Dog d1 = new Dog("", "", 0, 0.0, 0.0); 
        System.out.println("\nPlease enter the dogs name:"); 
        String Name = keyboard.next(); 
        d1.setName(Name); 

        System.out.println("\nPlease enter the dogs race (in English):"); 
        String Race = keyboard.next(); 
        d1.setRace(Race); 

        System.out.println("\nPlease enter the dogs age (years):"); 
        int age = keyboard.nextInt(); 
        d1.setage(age); 

        System.out.println("\nPlease enter the dogs weight in kg:"); 
        double weight = keyboard.nextDouble(); 
        d1.setweight(weight); 

        dogRegister.add(d1); 
        System.out.println("\n"); 
        System.out.println(
         "\nComplete dog information: " + "\nName: " + Name + "\nRace: " + Race 
          + "\nAge: " + age + "\nWeight: " + weight + " kg"); 
        System.out.println(dogRegister); 
        break; 
       case 2: //User gets to see the different taillengths of the dogs in the register 

        System.out.println(
         "\nEnter taillength and all dogs with a greater taillength will be displayed: "); 
        double taillength = keyboard.nextDouble(); 
        for (int index = 0; index < dogRegister.size(); index++) { 
         if (taillength <= (dogRegister.get(index).gettaillength())) { 
          System.out.println(dogRegister.get(index)); 
         } 
        } 
        break; 

       case 3: //User deletes a dog from the register 
        System.out.println("State the name of the dog you wish to delete from the register: "); 
        String delete = keyboard.nextLine(); 
        for (int del = 0; del < dogRegister.size(); del++) { 
         if (delete.equalsIgnoreCase(dogRegister.get(del).getName())) { 
          System.out.println("\nThe dog with the given name has been deleted from the register."); 
          dogFound = true; 
          dogRegister.remove(del); 
          System.out.print(dogRegister + "\n"); 
         } 
        } 
        { 
         if (!dogFound) 
          ; 
         System.out.println("A dog by that name is not registered in our system."); 
        } 
        break; 

       case 4: 
        System.out.println("\nThe program has now ended."); 
        toEnd = true; 
      } 
     } 
    } 
} 
+0

Вы должны пересмотреть свой алгоритм, особенно проверить Javadoc для класса, который вы используете для '' dogRegister'' - Я полагаю, что это нечто унаследованное от '' java.util.Collection''. Уже есть что-то, что вам нужно. Вы должны также предоставить всю необходимую информацию (необходимые определения типов и примеры данных) для воспроизведения вашей проблемы. Может быть, кто-то попытается расследовать это. – 0x0me

+0

'dogFound = false' оценивает' false', поэтому 'println' не будет печатать. Вместо этого вы хотите '! DogFound' или' dogFound == false'. –

ответ

1

Вы должны переместить else { } блок снаружи ваш цикл и используйте вторую переменную, чтобы определить, найдена ли существующая собака, а затем установите ее в true. Затем вместо этого записывается ваш блок else { }, if(!dogFound) { }

В противном случае ваш код напечатает строку «не найден», когда он встретит каждую собаку, которая не является тем, кого ищут, как я уверен, что вы видите. например

dogs = ["Jack","Pooch","Fido","Fluffy"] 

При попытке удалить «Пушистый» исполнение будет выглядеть следующим образом:

"Jack" isn't "Fluffy", print "not found." 
"Pooch" isn't "Fluffy", print "not found." 
"Fido" isn't "Fluffy", print "not found." 
"Fluffy" is "Fluffy", remove and print "removed." 
+0

Я пробовал пару вещей, но все еще не понял. – Caggen

+0

Пожалуйста, покажите, что вы пробовали. – Draco18s

+0

Я отредактировал мое первое сообщение – Caggen

Смежные вопросы