Почему java пропускает ввод данных
Перейти к содержимому

Почему java пропускает ввод данных

  • автор:

Пропускается ввод с клавиатуры

Author24 — интернет-сервис помощи студентам

Ввод с клавиатуры — требовать у пользователя ввод, пока он не будет корректным
Поискал в интернете и тут — не могу найти ответ на свой вопрос. Основная проблема — фильтровать.

Пропускается ввод
Собственно вопрос: почему при вводе второго элемента массива структур пропускается ввод имени? .

Пропускается ввод
Есть код (пишу в Visual Studio 17 Enterprice) int dimension = 2; // если тут будут бОльшие.

В цикле пропускается ввод данных
В цикле пропускает ввод названия продукта и даты изготовления. Почему и как исправить? #include.

488 / 336 / 132
Регистрация: 14.06.2016
Сообщений: 654

Между двумя if дочитай остаток строки

Добавлено через 1 минуту

1 2 3 4 5 6 7 8
if (scan.hasNextInt()) { age = scan.nextInt(); } scan.nextLine(); System.out.print("Input name: "); if (scan.hasNextLine()) { name = scan.nextLine(); }

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Пропускается ввод одного из элементов структуры
Здравствуйте, в коде ниже ошибка- пропускается ввод одного из элементов структуры: #include.

Пропускается ввод первого элемента массива
#include "pch.h" #include <iostream> #include <cstdio> #include <string> #include <stdio.h>.

Пропускается первый оператор чтения строки с клавиатуры
Проблема в этом фрагменте кода. В консоли запрашивает сразу ввести activity, пропуская чтение с.

После 1-го цикла пропускается ввод adres, почему так происходит?
#include<iostream> #include <cstring> using namespace std; struct anketa< char fio;.

Скажите пожалуйста, что не так: Почему в выделенной части кода пропускается ввод фамилии?
#include "stdafx.h" #include <iostream> #include <conio.h> #include <cstdlib> #include.

Файловый ввод-вывод, ввод с клавиатуры и обработка массива структур
Добрый вечер)) У меня небольшой вопрос. Почему первые буквы (в названии книг) не выводит на экран.

Или воспользуйтесь поиском по форуму:

Почему java пропускает ввод данных

Здравствуйте, написал небольшую программу в которой вручную вводятся данные о сотрудниках, а затем выводятся на экран.
Проблема в том, что первое поле вводится только 1 раз, т.е. только для 1го сотрудника, затем для следующих сотрудников компилятор его пропускает и предоставляет ввод только 2го и 3го полей. Кто знает в чем причина?

Вот пример:
Enter Name thom
Enter Character okay
Enter Salary 100000
Enter Name Enter Character ok
Enter Salary 200000
Enter Name Enter Character ok

import java . util .*;

public class EmployeeTest <
public static void main ( String [] arg )

Scanner in = new Scanner ( System . in );

Employee [] staff = new Employee [ 4 ];

for ( int i = 0 ; i <
System . out .print( «Enter Name » );
String f = in . nextLine ();
System . out .print( «Enter Character » );
String g = in . nextLine ();
System . out .print( «Enter Salary » );
double e = in . nextDouble ();
staff [ i ] = new Employee ( f , g , e );
>

for ( Employee i : staff )
System . out . println ( «Name » + i . getName () + «, Charakter » +
i . getCharacter () + «, Salary » + i . getSalary ());

class Employee <
public Employee ( String n , String c , double s )
<
name = n ;
character = c ;
salary = s ;
>

public String getName ()
<
return name ;
>

public String getCharacter ()
<
return character ;
>

public double getSalary ()
<
return salary ;
>

private String name ;
private String character ;
private double salary ;

Регистрация: 16.10.2012
Сообщений: 8

условие задачи строгое? иммею ввиду испольовать массив вместо коллекции и т/п. или просто нужно сделать рабочий вариант?

Регистрация: 25.11.2012
Сообщений: 4

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

Регистрация: 16.10.2012
Сообщений: 8

public class Employee <
private String name ;
private String character ;
private double salary ;

public Employee ( String name ) <
>

public Employee ( String name , String character , double salary ) <
this . name = name ;
this . character = character ;
this . salary = salary ;
>

public String getName () <
return name ;
>

public void setName ( String name ) <
this . name = name ;
>

public String getCharacter () <
return character ;
>

public void setCharacter ( String character ) <
this . character = character ;
>

public double getSalary () <
return salary ;
>

public void setSalary ( double salary ) <
this . salary = salary ;
>

@ Override
public boolean equals ( Object o ) <
if ( this == o ) return true ;
if ( o == null || getClass () != o . getClass ()) return false ;

Employee employee = ( Employee ) o ;

if ( Double . compare ( employee . salary , salary ) != 0 ) return false ;
if (! character . equals ( employee . character )) return false ;
if (! name . equals ( employee . name )) return false ;

@ Override
public int hashCode () <
int result ;
long temp ;
result = name . hashCode ();
result = 31 * result + character . hashCode ();
temp = Double . doubleToLongBits ( salary );
result = 31 * result + (int) ( temp ^ ( temp >>> 32 ));
return result ;
>
>

import java . io . BufferedReader ;
import java . io . IOException ;
import java . io . InputStreamReader ;
import java . util . ArrayList ;

public class EmployeeManager <
public static void main ( String [] args ) throws IOException <
BufferedReader reader = new BufferedReader (new InputStreamReader ( System . in ));

ArrayList < Employee >empl = new ArrayList < Employee >();

for ( int i = 0 ; i < 4 ; i ++)<
System . out .print( «Enter name: » );
String name = reader . readLine ();
System . out .print( «Enter character: » );
String character = reader . readLine ();
System . out .print( «Enter salary» );
double salary = Double . parseDouble ( reader . readLine ());
empl . add (new Employee ( name , character , salary ));
>

for ( Employee e : empl ) <
System . out . println ( «Name: » + e . getName () + » Character: » + e . getCharacter () + » Salary: » + e . getSalary ());
>

Вместо цикла в котором происходит ввод данных лучше замутить небольшую меню на «CASE»

Пропускает ввод строки в Java

Код запускается но после ввода номера 1, он пропускает имя и сразу просит ввести номер 2. Вот это вводит:

Input number 1: 5 Input Name: Input number 2: 

Как это можно решить?
Отслеживать
48.7k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
задан 3 авг 2022 в 13:27
David Tepols David Tepols
40 5 5 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Scanner in = new Scanner(System.in); int c = 0; System.out.print("Input number 1: "); int a = in.nextInt(); in.nextLine(); System.out.print("Input Name: "); String name = in.nextLine(); System.out.print("Input number 2: "); int b = in.nextInt(); 

У вас при считывании переменной а вы после того как вводите число и жмете Enter передаете кроме самого числа и символ перевода каретки «\n», он и записывается в «name». Строка кода

 in.nextLine(); 

«съедает» лишний символ перевода каретки и программа работает правильно

Почему scanner пропускает некоторые строчки в коде?

Я хочу через scanner записать данные с клавиатуры, но некоторые из них он просто пропускает, почему так?
В 1 кейсе код путевки вводится, а фамилия нет, но название пансионата тоже вводится.(везде где инт все нормально, только со стрингом такая проблема)

import java.util.Scanner; public class Main < public static void main(String[] args) < int b = -1; int i = 0, o = 0, p = 0; Scanner scanner = new Scanner((System.in)); зарпутевки[] h = new зарпутевки[10]; санатории[] k = new санатории[10]; оздоровительные[] l = new оздоровительные[10]; do < System.out.println("1 - Зарубежные путевки\n2 - Санатории\n3 - Детские оздоровительные\n4 - Вывод всех путевок\n0 - Выход"); b = scanner.nextInt(); switch (b) < case 0: < break; >case 1: < h[i] = new зарпутевки(); System.out.println("Введите код путевки"); h[i].code = scanner.nextInt(); System.out.println("Введите фамилию клиента"); h[i].фамилия = scanner.nextLine(); System.out.println("Введите название пансионата"); h[i].название = scanner.nextLine(); System.out.println("Введите номер"); h[i].number = scanner.nextInt(); System.out.println("Введите вид жилья"); h[i].виджилья = scanner.nextLine(); System.out.println("Введите дату заезда"); h[i].date1 = scanner.nextInt(); System.out.println("Введите дату выезда"); h[i].date2 = scanner.nextInt(); System.out.println("Введите количество человек"); h[i].quantity = scanner.nextInt(); System.out.println("Введите цену"); h[i].price = scanner.nextInt(); System.out.println("Введите номер загранпаспорта"); h[i].загпаспорт = scanner.nextInt(); System.out.println("Введите номер страховки"); h[i].страховка = scanner.nextInt(); i++; break; >case 2: < System.out.println("Введите код путевки"); k[o].code = scanner.nextInt(); System.out.println("Введите фамилию клиента"); k[o].фамилия = scanner.nextLine(); System.out.println("Введите название пансионата"); k[o].название = scanner.nextLine(); System.out.println("Введите номер"); k[o].number = scanner.nextInt(); System.out.println("Введите вид жилья"); k[o].виджилья = scanner.nextLine(); System.out.println("Введите дату заезда"); k[o].date1 = scanner.nextInt(); System.out.println("Введите дату выезда"); k[o].date2 = scanner.nextInt(); System.out.println("Введите количество человек"); k[o].quantity = scanner.nextInt(); System.out.println("Введите цену"); k[o].price = scanner.nextInt(); System.out.println("Введите номер медицинского полиса"); k[o].медполис = scanner.nextInt(); System.out.println("Введите номер диагноза"); k[o].диагноз = scanner.nextLine(); System.out.println("Введите направление"); k[o].направление = scanner.nextLine(); o++; >case 3: < System.out.println("Введите код путевки"); l[p].code = scanner.nextInt(); System.out.println("Введите фамилию клиента"); l[p].фамилия = scanner.nextLine(); System.out.println("Введите название пансионата"); l[p].название = scanner.nextLine(); System.out.println("Введите номер"); l[p].number = scanner.nextInt(); System.out.println("Введите вид жилья"); l[p].виджилья = scanner.nextLine(); System.out.println("Введите дату заезда"); l[p].date1 = scanner.nextInt(); System.out.println("Введите дату выезда"); l[p].date2 = scanner.nextInt(); System.out.println("Введите количество человек"); l[p].quantity = scanner.nextInt(); System.out.println("Введите цену"); l[p].price = scanner.nextInt(); System.out.println("Введите номер медицинского полиса"); l[p].age = scanner.nextInt(); System.out.println("Введите номер диагноза"); l[p].свидорож = scanner.nextInt(); System.out.println("Введите направление"); l[p].пол = scanner.nextLine(); p++; >case 4: < if (h[0]!=null) < for (int m = 0; m > if (o >= 0) < for (int n = 0; n > if (p >= 0) < for (int c = 0; c > > > >while(b!=0); > > class путевки < int code, number, quantity, date1, date2, price; String фамилия, название, виджилья; public путевки() < >public int getCode() < return code; >public void setCode(int code) < this.code = code; >public String getФамилия() < return фамилия; >public void setфамилия(String фамилия) < this.фамилия = фамилия; >public String getназвание() < return название; >public void setназвание(String название) < this.название = название; >public int getnumber() < return number; >public void setnumber(int number) < this.number = number; >public String getвиджилья() < return виджилья; >public void setвиджилья(String виджилья) < this.виджилья = виджилья; >public int getDate1() < return date1; >public void setDate1(int date1) < this.date1 = date1; >public int getDate2() < return date2; >public void setDate2(int date2) < this.date1 = date2; >public int getquantity() < return quantity; >public void setquantity(int quantity) < this.quantity = quantity; >public int getprice() < return price; >public void price(int price) < this.price = price; >public String toString() < return "Код путевки: " + code + "\nФамилия клиента: " + фамилия + "\nНазвание пансионата: "+название+"\nНомер: "+number+"\nВид жилья: "+виджилья+"\nДата заезда: "+date1+"\nДата выезда: "+date2+"\nКоличество человек: "+quantity+"\nЦена: "+price; >> class зарпутевки extends путевки < int загпаспорт, страховка; public int getзагпаспорт() < return загпаспорт; >public void setзагпаспорт(int загпаспорт) < this.загпаспорт = загпаспорт; >public int getстраховка() < return страховка; >public void setзстраховка(int зстраховка) < this.страховка = страховка; >public String toString() < return "Код путевки: " + code + "\nФамилия клиента: " + фамилия + "\nНазвание пансионата: "+название+"\nНомер: "+number+"\nВид жилья: "+виджилья+"\nДата заезда: "+date1+"\nДата выезда: "+date2+"\nКоличество человек: "+quantity+"\nЦена: "+price+"\nНомер загран паспорта: "+загпаспорт+"\nНомер страховки: "+страховка; >>
  • Вопрос задан 29 мар. 2023
  • 72 просмотра

Комментировать
Решения вопроса 0
Ответы на вопрос 1

gim0

Дело в том, что Scanner#nextInt считывает только цифровое значение без перехода на новую строку. Таким образом выходит, что последующий вызов Scanner#nextLine видит новую строку за счёт того, что ты нажал Enter вводя число.

Используй для всех инпутов Scanner#nextLine и конвертируй полученную строку в нужный тип.

System.out.println("Введите код путевки"); l[p].code = Integer.parseInt(scanner.nextLine());

Ответ написан 29 мар. 2023
Нравится 1 2 комментария
ashot_powershot @ashot_powershot Автор вопроса

Exception in thread «main» java.lang.NumberFormatException: For input string: «»
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
at java.base/java.lang.Integer.parseInt(Integer.java:675)
at java.base/java.lang.Integer.parseInt(Integer.java:781)
at Main.main(Main.java:21)
Вот такая ошибка выскакивает.

case 1:

ashot_powershot @ashot_powershot Автор вопроса

h[i].фамилия = Integer.parseInt(scanner.nextLine(); если я пишу так, то ошибка, но h[i].фамилия = String.parseString(scanner.nextLine(); нету. Я не понимаю, на что тут заменить

Добавить комментарий

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