【问题标题】:Using a custom print method in a class after overriding of toString is already done在覆盖 toString 之后在类中使用自定义打印方法已经完成
【发布时间】:2020-04-24 07:47:46
【问题描述】:

所以我已经在我的Customer 类中重写了toString() 方法,该方法用于显示所有客户和其他一些详细信息。现在我需要一种方法,在一定天数后向所有这些客户打印一封电子邮件。我尝试在我的Customer 类中创建一个方法printEmail(),但我不断收到错误:non-static variable cannot be referenced from a static context。无论如何我可以使用一种方法在设定的天数后为每个客户打印一些简单的文本?

Customer.java:

//
//
//  Generated by StarUML(tm) Java Add-In
//
//  @ Project : Untitled
//  @ File Name : Customer.java
//  @ Date : 21/04/2020
//  @ Author : 
//
//

package javaapplication1;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class Customer {
    private String name;
    private String email;
        private List <Customer> list;
    private Magazine magazines;


        public void SetName(String name){

            this.name = name;

        }
    public void SetEmail(String email){

            this.email = email;

        }
    public String GetName(){

            return name;

        }
    public String GetEmail(){

            return email;

        }

        public List<Customer> getList() {

            return list;

        }

        public void setList(List<Customer> list) {

            this.list = list;

        }

        public Magazine getMagazine(){

            return magazines;

        }

        public Customer(String name, String email, Magazine magazines){

            this.name = name;
            this.email = email;
            this.magazines = magazines;


        }

        public void printEmail(){


            System.out.println("Hi there, " + name + "!\n Your magazine is ready to look at, along with your desired list of supplements: " + magazines);


        }

        public String toString() {

            return "\nName: " + name + "\nEmail: " + email + "\n" + magazines + "\n";


        }

}

主要:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication1;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class JavaApplication1 {
    public static void main(String[] args) {

        List <Customer> customers = new ArrayList<Customer>();
        customers.add(new Customer("Morgan Freeman","morganfman@yahoo.com", magazineobj3));
        customers.add(new Customer("George Bush","gbush21@yahoo.com", magazineobj3));
        customers.add(new Customer("Jamie Carragher","jcarra@yahoo.com", magazineobj3));
        customers.add(new Customer("Sarah Williams","swilliams@yahoo.com", magazineobj3));
        customers.add(new Customer("Nathan Bledsoe","bledsoe@yahoo.com", magazineobj3));
        customers.add(new Customer("Phillip Franklin","pfranky@yahoo.com", magazineobj3));

        List <PayingCustomer> payingCustomers = new ArrayList<PayingCustomer>();


        payingCustomers.add(new PayingCustomer(customers.get(0), "Credit Card, Bank Account: 12345678"));
        payingCustomers.add(new PayingCustomer(customers.get(1), "Debit Card, Bank Account: 12345678"));


        int x = customers.lastIndexOf(customers);

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

            Customer.printEmail();

        }


    }

}

【问题讨论】:

    标签: java class arraylist printing


    【解决方案1】:

    您在 Main.java 中的 for-loop 不正确。我认为您想遍历所有 customerspayingCustomers 并打印他们的电子邮件。

    for (Customer customer: customers) {
       cutomer.printEmail()
    }
    
    for (Customer customer: payingCustomers) {
       cutomer.printEmail()
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多