问题扫描变量添加到arraylist

问题描述 投票:0回答:2

早上好,我正在学习 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

}
java list arraylist java.util.scanner
2个回答
0
投票

试试这个代码:

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
投票

如果你的班级的主要目的

Cliente
是透明和不变地传达数据,将你的班级定义为记录。

public record Cliente ( String nombre , String direccion , double credito ) {}

在实例化客户端之前使用扫描仪收集所有需要的数据。通常最好将用户界面与其他代码分开。

Scanner scanner = … int countOfClients = … ; List< Cliente > clientes = new ArrayList < Cliente >( countOfClients ); // Where convenient, specify the initial capacity of a new ArrayList. … for( int nthCliente = 1 , nthCliente <= countOfClients , nthCliente ++ ) { // Gather inputs from user-interface. String n = … ; String d = … ; Double c = … ; // Instantiate business objects Cliente cliente = new Cliente( n , d , c ) ; clientes.add( cliente ) ; }
    
© www.soinside.com 2019 - 2024. All rights reserved.