Java 打印出客户姓名、身份证、余额

Java 打印出客户姓名、身份证、余额,java,class,object,Java,Class,Object,我正在编写一个我需要的Java程序: 读取客户名称和id并将其存储在数组中的方法。(读取零行或多行的序列,每行包含一个客户的名称和id。每行实例化一个customer对象,并将每个对象存储在对象数组中。数组长度不必超过10个元素。name和id序列将以空行结束) 主要 import java.util.Scanner; 公共类客户测试{ 公共静态void main(字符串[]args){ 客户[]客户=新客户[10]; Scanner myScanner=新扫描仪(System.in); 内努米

我正在编写一个我需要的Java程序:

读取客户名称和id并将其存储在数组中的方法。(读取零行或多行的序列,每行包含一个客户的名称和id。每行实例化一个
customer
对象,并将每个对象存储在对象数组中。数组长度不必超过10个元素。
name
id
序列将以空行结束)

主要
import java.util.Scanner;
公共类客户测试{
公共静态void main(字符串[]args){
客户[]客户=新客户[10];
Scanner myScanner=新扫描仪(System.in);
内努米特姆;
readCustomer(myScanner,customers);//不确定此呼叫
readNameAmount(myScanner,客户);///不确定此呼叫
}
公共静态void readCustomer(扫描器myScanner,客户[]输入){
布尔值=假;
int numItem=0;
而(!streamEnded&&myScanner.hasNext()){
String name=myScanner.nextLine();
String id=myScanner.nextLine();
if(name.length()==0&&id.length()==0){
这是真的;
}否则{
输入[numItem]=name;//错误
输入[numItem]=id;//错误
}
numItem++;
客户测试=新客户(名称、id);
}
}
公共静态无效readNameAmount(扫描器myScanner,客户[]输入){
while(myScanner.hasNext()){
String id=myScanner.nextLine();
double amount=myScanner.nextDouble();
int i=0;
布尔值=false;

而(i你能检查一下这是否有效吗。 我不知道我是否理解你的问题,我只是澄清了错误

public class CustomerTest {
static int numItem = 0;
public static void main(String[] args) {
    Customer[] customers = new Customer[10];
    Scanner myScanner = new Scanner(System.in);

    readCustomer(myScanner, customers); //not sure about this calling
    readNameAmount(myScanner, customers); ////not sure about this calling
}
public static void readCustomer(Scanner myScanner, Customer[] input) {
    boolean streamEnded = false;

    while (!streamEnded && myScanner.hasNext()) {
        String name = myScanner.nextLine();
        String id = myScanner.nextLine();
        if (name.length() == 0 && id.length() == 0) {
            streamEnded = true;
        } 
        else {
            input[numItem].getName();
            input[numItem].getId(); //error
        }
        numItem++;
        Customer customerTest = new Customer(name, id);
    }
}
public static void readNameAmount(Scanner myScanner, Customer[] input) {
    while (myScanner.hasNext()) {

        String id = myScanner.nextLine();
        Customer cust = new Customer();
        double amount = myScanner.nextDouble();
        int i = 0;
        boolean found = false;

        while (i < numItem && !found) { //error

            if (input[i].equals(id)) { //error
                cust.changeBalance(amount);//error
            }
            found = true;
            i++;
        }
    }
} 
public static void print(Customer[] input, int numItem) {

    for (int i = 0; i < numItem; i++) {

        System.out.println(input[i].toString()); //error
    }
}
}

customers
numItem
的范围是错误的(您可能需要这里的字段),
changeBalance(double value)
不是有效的语法,您的意思是
changeBalance(amount);
确定输入示例是正确的吗?我的意思是您说“名称和id的序列将以空行结束”但是在第一行之后和第二行之后都有一个空行,因此空行不能确定序列是否会将Endedad setters添加到customer类并像这样调用输入[numItem].setName(name);输入[numItem].setId(id);readNameAmount方法中没有numItems,changeBalance方法在哪里?@Benj:在print方法中,它应该像“System.out.println(input[i].toString()”;“@maczikasz My bad,在读取下一行(id和amount)之前,输入应该有一个空行)谢谢你的帮助。我在创建对象cust时出错。我需要一个构造函数吗?@Benj:是的,你需要一个构造函数。请查看我的编辑。这是否正常工作?
public class CustomerTest {
static int numItem = 0;
public static void main(String[] args) {
    Customer[] customers = new Customer[10];
    Scanner myScanner = new Scanner(System.in);

    readCustomer(myScanner, customers); //not sure about this calling
    readNameAmount(myScanner, customers); ////not sure about this calling
}
public static void readCustomer(Scanner myScanner, Customer[] input) {
    boolean streamEnded = false;

    while (!streamEnded && myScanner.hasNext()) {
        String name = myScanner.nextLine();
        String id = myScanner.nextLine();
        if (name.length() == 0 && id.length() == 0) {
            streamEnded = true;
        } 
        else {
            input[numItem].getName();
            input[numItem].getId(); //error
        }
        numItem++;
        Customer customerTest = new Customer(name, id);
    }
}
public static void readNameAmount(Scanner myScanner, Customer[] input) {
    while (myScanner.hasNext()) {

        String id = myScanner.nextLine();
        Customer cust = new Customer();
        double amount = myScanner.nextDouble();
        int i = 0;
        boolean found = false;

        while (i < numItem && !found) { //error

            if (input[i].equals(id)) { //error
                cust.changeBalance(amount);//error
            }
            found = true;
            i++;
        }
    }
} 
public static void print(Customer[] input, int numItem) {

    for (int i = 0; i < numItem; i++) {

        System.out.println(input[i].toString()); //error
    }
}
}
public class Customer {

    private String name;
    private String id;
    private double balance;

    public Customer(){

    }
    public Customer(String name, String id) {
        this.name = name;
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public String getId() {
        return id;
    }
    public void changeBalance(double value) {
        balance = balance + value;
    }
    public String toString() {
        return "name " + name + " id " + id + " balance " + balance;
    }
}