You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java新手求助:myMethod方法的放置位置与调用问题

问题解决步骤

核心问题梳理

  1. 方法嵌套错误:Java不允许在main方法内部定义另一个方法,你之前注释掉的myMethod放在main里是非法的。
  2. 方法归属错误:myMethod的功能是遍历整个Pizza对象列表,属于批量操作,不该放在单个Pizza类中(单个Pizza对象不需要处理整个列表)。
  3. 大小写敏感问题:Java类名是大小写敏感的,你的类名是Pizza,但代码里多处用了小写的pizza,会导致“找不到符号”错误。
  4. 构造方法名错误:Pizza类的构造方法名写成了小写的pizza,必须和类名完全一致(大写P开头)。

修正后的完整代码

1. CSVToObjectConverter类(包含myMethod)

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class CSVToObjectConverter {

    // 把myMethod定义为静态方法,放在main外面
    public static void myMethod(List<Pizza> pizzaList) {
        for (int a = 0; a < pizzaList.size(); a++) {
            System.out.println(pizzaList.get(a).order_id());
        }
    }

    public static void main(String[] args) {
        String csvFile = args[0];
        String line;
        // 泛型改为大写Pizza,和类名一致
        List<Pizza> pizl = new ArrayList<>();

        try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
            while ((line = br.readLine()) != null) {
                String[] data = line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
                float pizza_id = Float.parseFloat(data[0]);
                float order_id = Float.parseFloat(data[1]);
                String pizza_name_id = data[2];
                float quantity = Float.parseFloat(data[3]);
                String order_date = data[4];
                String order_time = data[5];
                float unit_price = Float.parseFloat(data[6]);
                float total_price = Float.parseFloat(data[7]);
                String pizza_size = data[8];
                String pizza_category = data[9];
                String pizza_ingredients = data[10];
                String pizza_name = data[11];

                // 创建对象时用大写Pizza,和类名一致
                Pizza pizaA = new Pizza(pizza_id,
                        order_id,
                        pizza_name_id,
                        quantity,
                        order_date,
                        order_time,
                        unit_price,
                        total_price,
                        pizza_size,
                        pizza_category,
                        pizza_ingredients,
                        pizza_name);
                pizl.add(pizaA);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 直接调用静态方法myMethod,传入列表
        myMethod(pizl);
    }
}

2. Pizza类(修正构造方法名,移除多余的myMethod)

import java.util.List;

class Pizza {
    private float pizza_id;
    private float order_id;
    private String pizza_name_id;
    private float quantity;
    private String order_date;
    private String order_time;
    private float unit_price;
    private float total_price;
    private String pizza_size;
    private String pizza_category;
    private String pizza_ingredients;
    private String pizza_name;

    // 构造方法名改为大写Pizza,和类名一致
    public Pizza(float pizza_id,
                 float order_id,
                 String pizza_name_id,
                 float quantity,
                 String order_date,
                 String order_time,
                 float unit_price,
                 float total_price,
                 String pizza_size,
                 String pizza_category,
                 String pizza_ingredients,
                 String pizza_name) {
        this.pizza_id = pizza_id;
        this.order_id = order_id;
        this.pizza_name_id = pizza_name_id;
        this.quantity = quantity;
        this.order_date = order_date;
        this.order_time = order_time;
        this.unit_price = unit_price;
        this.total_price = total_price;
        this.pizza_size = pizza_size;
        this.pizza_category = pizza_category;
        this.pizza_ingredients = pizza_ingredients;
        this.pizza_name = pizza_name;
    }

    // 保留所有getter方法
    public float pizza_id() {
        return pizza_id;
    }
    public float order_id() {
        return order_id;
    }
    public String pizza_name_id() {
        return pizza_name_id;
    }
    public float quantity() {
        return quantity;
    }
    public String order_date() {
        return order_date;
    }
    public String order_time() {
        return order_time;
    }
    public float unit_price() {
        return unit_price;
    }
    public float total_price() {
        return total_price;
    }
    public String pizza_size() {
        return pizza_size;
    }
    public String pizza_category() {
        return pizza_category;
    }
    public String pizza_ingredients() {
        return pizza_ingredients;
    }
    public String pizza_name() {
        return pizza_name;
    }
}

关键说明

  • 把myMethod定义为CSVToObjectConverter的静态方法,因为main是静态方法,静态方法可以直接调用同类中的其他静态方法,不需要创建类的实例。
  • 所有涉及类名的地方统一用大写Pizza,解决大小写敏感导致的“找不到符号”错误。
  • 移除Pizza类中的myMethod,因为这个方法是处理整个列表的,不属于单个Pizza对象的职责,遵循单一职责原则。

内容的提问来源于stack exchange,提问作者gonza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 03:34:57