Member 13900790 Ответов: 1

Мне нужно получить доступ к имени и идентификатору через пользовательский ввод с помощью класса сканера


package customer_details;
import java.util.*;
public class customer_deatils
{
	
	public String name;
	public int id;
	
	public customer_deatils(String name,int id)
	{
		this.name=name;
		this.id=id;
	}
	public static void    customer_deatils(customer_deatils[] c)
	{
		for(customer_deatils d:c)
		{
			System.out.println(d);
		}
		
	}
	public String toString()
	{
		return name+" "+id;
	}
	public static void main(String args[])
	
	{
		Scanner s1=new Scanner(System.in);
		customer_deatils []acc1=new customer_deatils[3];
	//	customer_deatils obj=new customer_deatils(s1.nextLine(),s1.nextInt());
		
		 for(int i=0;i<acc1.length;i++)
		 {
			 
			 acc1[i]=new customer_deatils(s1.nextLine(),s1.nextInt());
			 
			 
		 }
		customer_deatils(acc1);
		
		
		
		
		
	}
	
	
}


Что я уже пробовал:

я пробовал, но он показывает несоответствие ввода ошибок, но я даю ввод на основе типа данных в конструкторе

Member 13900790

может ли кто-нибудь дать альтернативную идею

1 Ответов

Рейтинг:
2

Richard MacCutchan

После вашего звонка в s1.nextInt у вас есть завершающий символ новой строки, оставшийся во входном потоке сканера. Вы должны использовать это перед следующим вызовом. Кроме того, отладка будет намного проще, если вы будете считывать каждый элемент в локальную переменную перед созданием объекта класса.


Member 13900790

для удаления трейлинг-пробела можно ли использовать метод trim в строке s1.nextLine()

Member 13900790

Если я читаю входные данные и сохраняю их в локальной переменной, то получаю одно и то же имя и значение для всего массива

Richard MacCutchan

Вам все еще нужно считывать каждый элемент в локальные переменные на каждой итерации цикла.