Anmol_1994 Ответов: 3

Что я делаю не так в следующем пробкеме, по ссылке ниже


Сайт есть, вопрос дан на сайте

[^]

ниже приведено то, что я пробовал

мой код таков

public class Person {
    private int Age;	
  
    
	public Person(int intialAge) {
        
  		// Add some more code to run some checks on initialAge
        if(intialAge<0){
            System.out.println("Age given is  invalid ,setting age to 0");
                       intialAge=0;
                        Age=intialAge;
                       }
    }    
                              

	public void amIOld() {
        
         if(Age<13 && Age>0)
         {
             System.out.println("You are young.");
         }
       
        if(13 < Age && Age < 18){System.out.println("You are teenager.");
                                            }
  		if(Age>=18){
        System.out.println("You are old");
            
        }} 
    
	public void yearPasses() {
            Age = Age++;
	
    }


Что я уже пробовал:

Я застрял на этой проблеме уже много дней, на самом деле я не понимаю, когда и как вызывается метод yearPasses (), пожалуйста, помогите

[no name]

Ссылка на какой-то другой сайт не является "проблемой". Научитесь использовать отладчик, и вы сами узнаете, когда/как вызывается этот метод.

Anmol_1994

извините, что нет отладчика, доступного в этом Сире,я практикую различные проблемы, чтобы освежить их, есть ли предложения для сайтов, где я могу это сделать?

3 Ответов

Рейтинг:
9

Patrice T

Отчет об ошибке:
Ваш код не на возраст=13

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
20

CPallini

Цитата:
я не понимаю, когда и как вызывается метод yearPasses (), пожалуйста, помогите
Вы должны вызвать его (три раза) для каждого входного тестового случая (внимательно прочитайте требования и примеры).

Цитата:
если(возраст&ЛТ;13 и усилитель; & возраст&ГТ;0)

Это должно быть вместо этого
if(Age<13 && Age>=0)


[обновление]
Цитата:
Возраст = Возраст++;
Это грубая ошибка. Это должно быть либо

Age++;

или
++Age;

или
Age = Age + 1;

[/обновление]


Anmol_1994

все еще не проходит тестовые случаи, с этим кодом и внесенными изменениями, yearpasses вызывается 3 раза.

Anmol_1994

пожалуйста, вернитесь на сайт и повторите попытку,может быть, вы обнаружите какую-то ошибку ,которую я не мог видеть

CPallini

Вы должны запустить свой код по образцу входных данных и проверить, почему он не работает так, как ожидалось. То есть, пожалуйста, отладьте свой код.

Рейтинг:
13

Richard MacCutchan

1. Конструктор является неверным, поскольку он устанавливает только Age = intialAge; если intialAge меньше 0. Проверьте, где находится ваша закрывающая скоба.
2. Ваш yearPasses функция требует четырех вызовов, чтобы правильно увеличить значение возраста. Прочтите документацию по префиксным и постфиксным операторам. Лучше было бы написать это так:

public void yearPasses() {
        // Increment this person's age.
        Age += 1;
}

3. Вы искали Age < 13 и Age > 13 но никогда Age == 13 Вы знаете, что возраст всегда будет больше или равен нулю, поэтому вам нужно только проверить другие значения. Вы также должны использовать if ... else if ... else а не много одиноких if статьи.