【问题标题】:Printing 1D Array打印一维阵列
【发布时间】:2014-05-02 13:51:03
【问题描述】:

我试图从另一个类打印一维数组。但问题是 print 语句只打印相同的元素。

例如:

输入客户总数:3

姓名:杰西卡
年龄:22
性别:女


姓名:约翰
年龄:28
性别:男


姓名:迈克
年龄:35
性别:男

我从这个程序中得到的输出与最后一个客户的元素相同。

姓名-------------年龄------------性别

迈克                 35                  男

迈克                 35                  男

迈克                35            男

相反,我想得到类似的东西:

姓名-------------年龄------------性别

杰西卡            22                  女性

约翰                 28                  男性

迈克                35            男

我不知道我遗漏了什么部分或做错了什么。非常感谢任何反馈!

import java.util.Scanner;
public class Customer1234 {
public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    int x;
    System.out.print("Enter total number of customers: ");
     x = input.nextInt();

    Customer [] customers = new Customer[x];



    Customer.data(customers);

    System.out.println("Name" + "-------------"+ "Age" +"-----------" +"Gender");
    for(int i = 0; i <customers.length; i++){

        System.out.println(customers[i].toString());
    }



}

static class Customer{

    private static String name;
    private static int age;
    private static String gender;


    public Customer(String name, int age, String gender){

        Customer.setName(name);
        Customer.setAge(age);
        Customer.setGender(gender);

    }


    public static void data(Customer [] customers){
        Scanner input = new Scanner(System.in);

        for(int i = 0; i < customers.length; i++){

            System.out.print("Name: ");
            setName(input.next());

            System.out.print("Age: ");
            setAge(input.nextInt());

            System.out.print("Gender: ");
            setGender(input.next());

            customers[i] = new Customer( getName(), getAge(), getGender());
        }

    }


    public static String getName() {
        return name;
    }

    public static void setName(String name) {
        Customer.name = name;
    }

    public static int getAge() {
        return age;
    }

    public static void setAge(int age) {
        Customer.age = age;
    }

    public static String getGender() {
        return gender;
    }

    public static void setGender(String gender) {
        Customer.gender= gender;
    }





    public String toString()
    {
        String result;
        result = name +"         "+ age +"            "+ gender;
        return result;
    }



}
}

【问题讨论】:

    标签: java arrays printing


    【解决方案1】:

    您的问题是在 Customer 类中到处使用static。我将其重写为:

     private String name;
        private int age;
        private String gender;
    
    
        public Customer(String name, int age, String gender){
    
            this.name = name;
            this.age = age;
           this.gender = gender;
    
        }
    
    
        public static void data(Customer [] customers){
            Scanner input = new Scanner(System.in);
    
            for(int i = 0; i < customers.length; i++){
    
                System.out.print("Name: ");
                setName(input.next());
    
                System.out.print("Age: ");
                setAge(input.nextInt());
    
                System.out.print("Gender: ");
                setGender(input.next());
    
                customers[i] = new Customer( getName(), getAge(), getGender());
            }
    
        }
    
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender= gender;
        }
    
    
    
    
    
        public String toString()
        {
            String result;
            result = name +"         "+ age +"            "+ gender;
            return result;
        }
    
    
    
    }
    

    【讨论】:

    • 感谢 hexafraction 的反馈。我做了你建议我做的事情,但现在我在 data 方法和 mutator(setters) 方法中的每个打印语句上都收到错误消息。对不起,我是 Java 新手。对于我对 Java 的有限理解,我深表歉意。
    • @psSS 在适用的任何地方将Customer.whatever 更改为this.whatever
    【解决方案2】:

    您正在使用static 变量,它只允许Customer 类的每个字段有一个值。将所有字段设为实例变量,以确保使用每个类实例的单独值

    class Customer{
    
        private String name;
        private int age;
        private String gender;
    
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 2021-07-12
      • 2016-07-20
      • 1970-01-01
      • 2022-08-07
      • 1970-01-01
      • 2017-08-07
      相关资源
      最近更新 更多