package javaapplication68;
import java.util.Scanner;
public class JavaApplication68 {
public static void main(String[] args) {
Scanner read = new Scanner(System.in);
String name = read.nextLine();
int age = read.nextInt();
Student student = new Student();
student.name = name;
student.setAge(age);
System.out.println("Name: " + student.name);
System.out.println("Age: " + student.getAge());
}
}
class Student{
public String name;
private int age;
public int getAge(){
return age;
}
public int setAge(int age){
this.age = age;
if (age<0){
System.out.println("Invalid age");
this.age = 0;
}
else
this.age = age;
return age;
}
}
Pasha Motyuk
1 уровень
У меня проблема при запуске не запрашивает ввод имени и возраста с клавиатуры. Просто ничего не происходит. Почему не понимаю:
Решен
Комментарии (11)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ada
3 июня 2022, 10:30
Вы используете NetBeans?
Попробуйте очистить и собрать проект (Shift + F11), а затем запустить его с помощью F6
0
Денис Enterprise Java Developer
3 июня 2022, 10:01
А что по вашему должно происходить?
Попробуйте запустить программу и ввести пару строк нажимая enter периодически.
И обратите внимание на setAge, там у вас полный бардак. Рекомендую почитать что ни будь о getter и setter методах класса.
Например возвращая значение из метода setAge вы нарушаете семантику языка. То что делает set ничего не возвращает. Для получения значения есть get.
Это кстати не говоря о неразберихе с присвоением значения. Сначала вы его присваиваете, потом валидируете, потом еще раз присваиваете. Зачем? Не проще ли так?
0
Pasha Motyuk
3 июня 2022, 10:09
Я предполагал, что он предложит мне ввести имя и возраст студента, но он сразу же завершает программу. Задание такое было: Программа должна принимать ввод имени и возраста студента в качестве вводных данных. И на выводе она должна вывести их, а если возраст отрицательный то вывести сначала фразу Invalid age и возраст тогда 0 вывести. А после запуска у меня вот что:
run:
BUILD SUCCESSFUL (total time: 0 seconds)
Она просто сразу заканчивается и все
0
Денис Enterprise Java Developer
3 июня 2022, 10:25
ну хз, у меня все работает :) Проверь что запускаешь именно эту программу.
0
hidden #598481
3 июня 2022, 10:25
Она не заканчивается, она ждёт твоего ввода.
Вводи туда же, где ты видишь эту надпись.
0
hidden #598481
3 июня 2022, 10:25
Сеттер вообще не должен иметь проверок, это же сеттер.
0
Денис Enterprise Java Developer
3 июня 2022, 10:28
Да это понятно, но в целом, пусть и тупо, но думаю это допустимо, до тех пор пока он именно сетит значение. А вот возвращать уже полный бред.
0
Pasha Motyuk
3 июня 2022, 10:28
Изначально у меня так и было, кроме скобочек там где else. И я понимаю, что setAge ничего не должен возвращать. Я эту фразу return age добавил, потому что без нее у меня выскакивает ошибка после последней скобки метода setAge "Missing return statement" и когда я пишу return age то она пропадает и все нормально. Блин я тут пока писал понял, я тут немного невнимательный и потому void в методе пропустил. Поэтому он у меня требовал возврат значения из-за чего я и прописал return. Но у меня он по прежнему игнорирует ввод значения с клавиатуры
0
Pasha Motyuk
3 июня 2022, 10:33
Я ничего не могу ввести после этой фразы в конце. Она сразу же после запуска программы появляется. А первую строчку с инициализацией в сеттере я забыл удалить да. Это я сначала ее просто прописал, а потом понял, что надо добавить условие больше нуля и не удалил ее. Я блин чуток невнимательный. Новичок еще немного, хотя вроде смотрю внимательно но иногда пропускаю очевидные ошибки
0
Денис Enterprise Java Developer
3 июня 2022, 10:38
ты не пропустил void, ты вместо него поставил int, вот от тебя и требовали вернуть int.
0
Pasha Motyuk
3 июня 2022, 10:41
Странно. Я создал новый проект, полностью скопировал туда код и все заработало. В любом случае спасибо за уделенное время и помощь
0