Использование пользовательского метода печати в классе после того, как переопределение toString уже сделано - PullRequest
0 голосов
/ 24 апреля 2020

Итак, я уже сделал переопределение метода toString() в моем классе Customer, который используется для отображения всех клиентов и некоторых других деталей. Теперь мне нужен метод, который распечатывает электронную почту для всех этих клиентов через определенное количество дней. Я пытался создать метод printEmail() в своем классе Customer, но получаю сообщение об ошибке: 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";


        }

}

Main:

/*
 * 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();

        }


    }

}

1 Ответ

1 голос
/ 24 апреля 2020

Ваш for-loop в Main. java неверен. Я думаю, что вы хотите перебрать все customers и payingCustomers и распечатать их электронные письма.

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

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