Хакерранк Неправильный Ответ

#java

Вопрос:

Я практиковался в своих навыках кодирования на хакерранке 30 дней кода.При решении проблемы 4-го дня классов и экземпляров она показала неправильный результат.[введите описание изображения здесь][1]

Ожидаемые результаты: https://i.stack.imgur.com/YOgMw.jpg

Мои выходные данные: https://i.stack.imgur.com/Ee27n.jpg

Если вы заметили, в моем коде есть дополнительная строка, и она появляется только тогда, когда последний ввод устарел. Кто — нибудь может сказать, как это исправить?

https://i.stack.imgur.com/jnPZZ.jpg

Вот мой код:

 import java.io.*;
import java.util.*;

public class Person {
    private int age;    
  
    public Person(int initialAge) {
        // Add some more code to run some checks on initialAge
        this.age=initialAge;
          
    }

    public void amIOld() {
        // Write code determining if this person's age is old and print the correct statement:
            if(age<0)
        {  age=0;
            System.out.println("Age is not valid,setting age to 0");
            System.out.println("You are young.");
            }
         
         else if(age<13){
       System.out.println("You are young.");}
     
    else if(age>=13amp;amp;age<18){
        System.out.println("You are a teenager.");} 
 else
    {  System.out.println("You are old.");
        }
    
}

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

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        for (int i = 0; i < T; i  ) {
            int age = sc.nextInt();
            Person p = new Person(age);
            p.amIOld();
            for (int j = 0; j < 3; j  ) {
                p.yearPasses();
            }
            p.amIOld();
            System.out.println();
        }
        sc.close();
    }
}
 

Комментарии:

1. Так как вы всегда звоните System.out.println(); , вы всегда будете печатать дополнительную строку после каждой итерации цикла. Если вы не хотите этого для последней итерации, вы можете просто обернуть эту строку в условие, которое проверяет переменную вашей итерации. Что-то вроде if ( i < (T-1))

2. я не могу внести какие-либо изменения в основную функцию,пожалуйста, скажите, могу ли я еще что-нибудь сделать

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

Ответ №1:

Попробуйте это:

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

    public void amIOld() {
        // Write code determining if this person's age is old and print the correct statement:
          if(age<13){
              System.out.print("You are young.");
              System.out.println("");
          }else if (age>=13 amp;amp; age<18){
              System.out.print("You are a teenager.");
              System.out.println("");
          }else {
              System.out.print("You are old.");
              System.out.println("");
          }
    }

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

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        for (int i = 0; i < T; i  ) {
            int age = sc.nextInt();
            Person p = new Person(age);
            p.amIOld();
            for (int j = 0; j < 3; j  ) {
                p.yearPasses();
            }
            p.amIOld();
            System.out.println();
        }
        sc.close();
    }
}
 

Комментарии:

1. Спасибо, но это не работает, результат все тот же

2. @tanujabhatnagar Я обновил ответ. Это должно быть принято ответом HackerRank

Ответ №2:

это моя попытка:

 public class Person {
private int age;    

public Person(int initialAge) {
    // Add some more code to run some checks on initialAge
     if(initialAge>=0) age=initialAge;
     else{
      age=0;
      System.out.println("Age is not valid, setting age to 0.");
     }
}

public void amIOld() {

    if(age<13)System.out.println("You are young.");
    if(age>=13 amp;amp; age<18)System.out.println("You are a teenager.");
    if(age>=18) System.out.println("You are old.");
}

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

Ответ №3:

Это ответ для HackerRank — 30 дней кода — 4 дня классов и экземпляров

 import java.io.*;
import java.util.*;

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

    public void amIOld() {
        // Write code determining if this person's age is old and print the correct statement:
        String output="";
        if (age < 13) {
            output="You are young.";
        }else if (age < 18) {
            output="You are a teenager.";
        }else {
            output="You are old.";
        }
        System.out.println(output);
    }

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

    public static void main(String[] args) { ... }
 

Ответ №4:

я пробовал это и исправил эту ошибку, используя следующий код;

импорт java.io.; импорт java.util.;

человек публичного класса { частный в возрасте;

 public Person(int initialAge) {
    // Add some more code to run some checks on initialAge
     if(initialAge<0)
    {
        this.age=0;
        System.out.print("Age is not valid, setting age to 0.");
    }
    else
        this.age=initialAge;
      
}

public void amIOld() {
    // Write code determining if this person's age is old and print the correct statement:
      System.out.println("");
        if(age>=0 amp;amp; age < 13){
             System.out.print("You are young.");}
        else if(age>=13 amp;amp; age < 18){
             System.out.print("You are a teenager.");}
        else{
            System.out.print("You are old.");}
        
}

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

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int T = sc.nextInt();
    for (int i = 0; i < T; i  ) {
        int age = sc.nextInt();
        Person p = new Person(age);
        p.amIOld();
        for (int j = 0; j < 3; j  ) {
            p.yearPasses();
        }
        p.amIOld();
        System.out.println();
    }
    sc.close();
}
 

}