@VorpaBlade

Java консольный ввод. Почему не получается ввести строку?

package com.company;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
	Scanner in = new Scanner(System.in);
	int y=in.nextInt();
	float x=in.nextFloat();
	in.next();
	String h=in.nextLine();
	System.out.printf("x = %.3f, y =%d, h=%s \n", x,y, h); 
	in.close();
	}
}


1)После ввода чисел программа закрывается, и h остаётся не заданным. Напишите пожалуйста верный вариант программы и почему ввшеприведенный вариант не работает?
2) для чего нужно in.close() в каких случаях добавлять в каких не нужно?
  • Вопрос задан
  • 486 просмотров
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
После ввода чисел программа закрывается, и h остаётся не заданным. Напишите пожалуйста верный вариант программы и почему ввшеприведенный вариант не работает?


Попробуйте так:
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int y=in.nextInt();
float x=in.nextFloat();
in.nextLine();
String h = in.nextLine();
System.out.printf("x = %.3f, y =%d, h=%s \n", x,y, h);
in.close();
}
}


Вот, ответ на ваш вопрос:
https://stackoverflow.com/questions/13102045/scann...

для чего нужно in.close() в каких случаях добавлять в каких не нужно?

При вызове метода закрывается сканнер. Однако, так как Scanner имплементирует интерфейс Closable, вы можете использовать Scanner с try with resouces и явно не вызывать метод close()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы