提问人:Nicolas Ramos 提问时间:3/28/2023 最后编辑:MC EmperorNicolas Ramos 更新时间:3/28/2023 访问量:54
要添加到 ArrayList 的问题扫描变量
problem scan variable to add to arraylist
问:
早上好,我正在学习 Java,我遇到了一个问题,我不知道解决方案是什么......我想将一定数量的数据(名称、地址、金钱)添加到数组列表中,我为此做了一个 for 循环,并且在执行变量读取时没有正确完成。 当我使用 nextLine 读取变量 0 时,程序会跳转到 1,因此我不会输入我想要的信息量 现在,当我使用 next() 时,这不会发生,但是当我想输入一个空格分隔的名称作为数据时,就像我使用 nextLine 一样完成相同的跳转......有人有什么建议吗? 阵 列
我的代码还没有完成,因为我不能从这里开始
public static void main(String\[\] args) {
Scanner sc = new Scanner(System.in);
List <Cliente> lista = new ArrayList<Cliente>(); //declaracion y asignacion del ArrayList
Cliente clie = new Cliente();
System.out.println("De la cantidad de cientes a ingresar: ");
int n = sc.nextInt();
for (int i = 0; i < n; i ++) {
//lista.add(new Cliente("nico","ramos ",1,25000));
System.out.println("Al cliente se le asigno un numero de cliente");
clie.setCodigoCliente(i);
System.out.println("Ingrese el nombre del cliente " +i);
String nom;
clie.setNombre(nom = sc.nextLine());
System.out.println("Ingrese la direccion del cliente "+i);
String direccion;
clie.setDireccion(direccion = sc.nextLine());
}
}
public class Cliente {
int codCliente;
String nombre;
String direccion;
double credito;
public Cliente() { }
public Cliente(String nombre, String direccion, double credito) {
// this.codCliente = codCliente;
this.nombre = nombre;
this.direccion = direccion;
this.credito = credito;
}
// Getters and setters omitted for brevity
}
答:
0赞
Ruslan Macari
3/28/2023
#1
请尝试以下代码:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class ClientTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Cliente> lista = new ArrayList<Cliente>(); //declaracion y asignacion del ArrayList Cliente clie = new Cliente();
System.out.println("Enter how many clients will be added:");
int n = sc.nextInt(); // if you will type here '2 abc' then
//n will be '2' and nextLine will be ' abc' that's why 'sc = new Scanner(System.in)' is used to reset the scanner
sc = new Scanner(System.in);
for (int i = 0; i < n; i++) {
Cliente cliente = new Cliente();
cliente.setCodigoCliente(i);
System.out.println("Enter number of client# " + i);
cliente.setNombre(sc.nextLine());
System.out.println("Enter direccion of client: " + i);
cliente.setDireccion(sc.nextLine());
lista.add(cliente);
}
System.out.println(lista);
}
}
class Cliente {
int codCliente;
String nombre;
String direccion;
double credito;
public Cliente() {
}
public Cliente(String nombre, String direccion, double credito) {
// this.codCliente = codCliente;
this.nombre = nombre;
this.direccion = direccion;
this.credito = credito;
}
@Override
public String toString() {
return "Cliente{" +
"codCliente=" + codCliente +
", nombre='" + nombre + '\'' +
", direccion='" + direccion + '\'' +
", credito=" + credito +
'}';
}
public void setCodigoCliente(int codCliente) {
this.codCliente = codCliente;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public void setCredito(double credito) {
this.credito = credito;
}
public int getCodCliente() {
return codCliente;
}
public String getNombre() {
return nombre;
}
public String getDireccion() {
return direccion;
}
public double getCredito() {
return credito;
}
}
评论
0赞
ray
3/28/2023
请在您的答案中添加更多详细信息/解释。
0赞
Basil Bourque
3/28/2023
#2
更改为 因为您希望它是一个递增的数字而不是文本。String nombre
int nombre
如果类的主要用途是透明且不可变地通信数据,请将类定义为记录。Cliente
public record Cliente( int nombre , String direccion , double credito ) { }
提示: 记录可以在方法中本地定义,也可以嵌套在另一个类中,也可以嵌套在它自己的独立文件中。.java
使用扫描程序在实例化客户端之前收集所有需要的数据。通常,最好将用户界面与其他代码分开。
使用 scanner 命令(如 和 )时,请确保通过调用 来使用剩余的行尾。请参阅有关此问题的答案。nextInt
nextDouble
nextLine
record Cliente( int nombre , String direccion , double credito ) { }
Scanner scanner = new Scanner( System.in );
System.out.println( "How many?" );
int count = scanner.nextInt();
scanner.nextLine(); // Consume the end-of-line left over from the `nextInt` call.
List < Cliente > clientes = new ArrayList <>( count ); // When convenient and sensible, specify the initial capacity of a new `ArrayList`.
for ( int nth = 1 ; nth <= count ; nth++ )
{
// Gather inputs from user-interface.
System.out.println( "direccion: " );
String d = scanner.nextLine();
System.out.println( "credito: " );
double c = scanner.nextDouble();
scanner.nextLine(); // Consume the end-of-line left over from the `nextDouble` call.
// Instantiate business object.
Cliente cliente = new Cliente( nth , d , c );
clientes.add( cliente );
}
System.out.println( clientes );
How many?
3
direccion:
one
credito:
1.1
direccion:
two
credito:
2.2
direccion:
three
credito:
3.3
[Cliente[nombre=1, direccion=one, credito=1.1], Cliente[nombre=2, direccion=two, credito=2.2], Cliente[nombre=3, direccion=three, credito=3.3]]
评论
0赞
Nicolas Ramos
3/28/2023
感谢您的帮助,我看到了您的代码并将其与我的代码进行了比较,我对扫描仪的工作原理知之甚少,您对它的评论让我知道我犯了什么错误......来自阿根廷的问候 <3
评论