#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();
}
}