2014-10-11 5 views
-6

Я хочу сказать спасибо за просмотр моего сообщения и любые вклады в мою проблему, которую я имею. Я довольно новичок в java, поэтому мне было интересно, могли бы вы, ребята, помочь мне отладить эту программу.java программирование отладка программы

import java.util.Scanner; 

public class DebugExercise { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     String area, inStr; 
     int pages; 

     System.out.println("Please enter your city"); 
     area = input.nextLine(); 

     System.out.println("Please enter page number " + area + "'s phone book"); 
     pages = input.nextInt(); 

     PhoneBook phoneBook = new PhoneBook(area, pages); 
     phoneBook.display(); 
    } 
} 

class PhoneBook extends Book { 

    private String area; 
    private String size; 

    PhoneBook(int pages, String city) { 
     super(); 
     area = city; 
     if (pages > 300) { 
      size = "big"; 
     } else { 
      size = "small"; 
     } 
    } 

    public display() { 
     System.out.println(area + pages + size); 
    } 
} 

class Book { 

    protected int pages; 

    public Book(int pages) { 
     pages = pages; 
    } 

    public int getPages() { 
     return pages; 
    } 
} 
+0

В чем проблема? – Maroun

+0

Я заметил пару ошибок, в которых отсутствовал один в главном и классе. –

+0

Мне нужно отладить программу и не найти другие ошибки в программе. Я не хороший отладчик. –

ответ

2

своп аргументы в телефонной книге конструктора

public static void main(String[] args) { 
      Scanner input = new Scanner(System.in); 
      String area, inStr; //there is no need of inStr as you are not using it so remove it if not used 
      int pages; 

      System.out.println("Please enter your city"); 
      area = input.nextLine(); 

      System.out.println("Please enter page number " + area + "'s phone book"); 
      pages = input.nextInt(); 

      PhoneBook phoneBook = new PhoneBook(pages,area); //swapp the argurments 
       phoneBook.display(pages, area); //add arguments to this otherwise it will just show 0 
     } 

А в классе телефонной книги добавить аргумент супер

PhoneBook(int pages, String city) { 
     super(pages); // u can even remove this its not needed 
     area = city; 
     if (pages > 300) { 
      size = "big"; 
     } else { 
      size = "small"; 
     } 

public void display(int pages,String area) { 
    System.out.println(area + pages + size); 
} 
} 

Теперь он будет работать

+0

спасибо, что это сработало, но ему нужно отобразить город номер страницы, и если он большой или маленький в соответствии с оператором if –

+0

Я считаю, что есть еще одна скрытая ошибка, которая останавливается от отображения номер страницы в заявлении println –

+0

принять ответ, если помог :) – kirti

0

Прежде всего, имеют несколько элементарных проблем:

  1. в конструкторе вашего Phonebook класса PhoneBook(int pages, String city), вы называете super(), но не пустой конструктор класса книги, так что вы должны вызвать super(pages).
  2. В конструкторе класса Book вы назначаете переменную pages своим собственным значением. что вы, вероятно, хотели сделать, это this.pages = pages;. Используя this.pages, вы указываете java, что вы ссылаетесь на поле pages объекта, который вы создаете, а не на параметр, переданный конструктору. вы можете больше узнать о ключевом слове в документации Oracle here
Смежные вопросы