java中静态方法中的全局变量访问

java中静态方法中的全局变量访问,java,static,Java,Static,有没有办法在静态方法中使用全局变量?我的目标是打印包含对象(食品和非食品)的ArrayList的内容。我认为使用toString()方法将是打印它的最佳方式,但似乎无法使它正常工作。我曾尝试使用全局变量,但当我使用this.关键字时,它表示无法在静态上下文中使用此变量。这些方法必须是静态的,因为我不想实例化这个类。有什么建议吗 在printInven()方法中,我还尝试了System.out.println(I+1+“”+inven.get(I.toString())我完全可以使用不同的方法打印

有没有办法在静态方法中使用全局变量?我的目标是打印包含对象(食品和非食品)的ArrayList的内容。我认为使用
toString()
方法将是打印它的最佳方式,但似乎无法使它正常工作。我曾尝试使用全局变量,但当我使用
this.
关键字时,它表示无法在静态上下文中使用此变量。这些方法必须是静态的,因为我不想实例化这个类。有什么建议吗

printInven()
方法中,我还尝试了
System.out.println(I+1+“”+inven.get(I.toString())我完全可以使用不同的方法打印ArrayList中的对象。我认为让全局变量工作是使用
toString()
方法的最佳方式

import java.util.ArrayList;
import java.util.Scanner;

public class Inventory{
    public static ArrayList<Items> inven = new ArrayList<Items>();
    Scanner scan = new Scanner (System.in);
    private String name;
    private static int ID;
    private double price;
    private boolean in_stock;
    private boolean food;
    public static void main(String[] args) {
    
    }

    //Add Food Item
    public static void addFood(String name, int ID, double price, boolean in_stock, boolean food){
        name = name;
        ID = ID;
        price = price;
        in_stock = in_stock;
        food = food;

        Food newFood = new Food(name, ID, price, in_stock, food);
        inven.add(newFood);
    }

    //Add Non food item
    public static void addNonFood(String name, int ID, double price, boolean in_stock, boolean food){
        name = name;
        ID = ID;
        price = price;
        in_stock = in_stock;
        food = food;

        NonFood newNonFood = new NonFood(name, ID, price, in_stock, food);
        inven.add(newNonFood);
    }

    //Delete inventory
    public static void delInven(int num){
        inven.remove(num);
    }

     //Print Inventory
    public static void printInven(){
        for(int i = 0; i < inven.size(); i++){
            System.out.println(i+1 + " " + inven.get(i));
        }
    }
    

    //Clear Inventory
    public static void clearInven(){
        inven.clear();
    }

    //Replace item
    //Polymorphism for food and non food items
    public static void replaceNewNonFoodInven(int n, String name, int ID, double price, boolean in_stock, boolean food){
        name = name;
        ID = ID;
        price = price;
        in_stock = in_stock;
        food = food;
        NonFood newNonFood = new NonFood(name, ID, price, in_stock, food);
        inven.set(n, newNonFood);
    }    
}
import java.util.ArrayList;
导入java.util.Scanner;
公共类目录{
public static ArrayList inven=new ArrayList();
扫描仪扫描=新扫描仪(System.in);
私有字符串名称;
私有静态int-ID;
私人双价;
私有布尔库存;
私人食品;
公共静态void main(字符串[]args){
}
//添加食物项
公共静态void addFood(字符串名称、整数ID、双倍价格、布尔库存、布尔食品){
名称=名称;
ID=ID;
价格=价格;
库存=库存;
食物=食物;
食品新食品=新食品(名称、ID、价格、库存、食品);
投资添加(新食品);
}
//添加非食物项
公共静态void addNonFood(字符串名称、整数ID、双倍价格、布尔库存、布尔食品){
名称=名称;
ID=ID;
价格=价格;
库存=库存;
食物=食物;
NonFood newNonFood=新非食品(名称、ID、价格、库存、食品);
投资增加(新非食品);
}
//删除库存
公共静态void delInven(int num){
inven.remove(num);
}
//打印库存
公共静态void printInven(){
对于(int i=0;i
您可以参考下面的代码。我希望这将解决您的疑问

公共类非食品{

private String name;
private static int ID;
private double price;
private boolean in_stock;
private boolean food;

public NonFood(String name, int iD, double price, boolean in_stock, boolean food) {
    this.name = name;
    this.ID = iD;
    this.price = price;
    this.in_stock = in_stock;
    this.food = food;
}

@Override
public String toString() {
    return "Name: '" + this.name + "' ID: '" + this.ID + "' price: '" + this.price + "' in_stock: '" + this.in_stock + "' food: '" + this.food +"'";
}
}

公共食品{

private String name;
    private static int ID;
    private double price;
    private boolean in_stock;
    private boolean food;

public Food(String name, int iD, double price, boolean in_stock, boolean food) {
    this.name=name;
    this.ID=iD;
    this.price=price;
    this.in_stock=in_stock;
    this.food=food;
}

@Override
public String toString() {
    return "Name: '" + this.name + "' ID: '" + this.ID + "' price: '" + this.price + "' in_stock: '" + this.in_stock + "' food: '" + this.food +"'";
}
}

公共类目录{

public static ArrayList<Object> inven = new ArrayList<Object>();
Scanner scan = new Scanner (System.in);

private String name;
private static int ID;
private double price;
private boolean in_stock;
private boolean food;

public static void main(String[] args) {

    for (int i = 0; i < 2; i++) {
        addFood("Food"+i, i, 100+i, true, true);
    }
    
    for (int i = 0; i < 2; i++) {
        addNonFood("NonFood"+i, i, 100+i, true, true);
    }
    
    printInven();
}

//Add Food Item
public static void addFood(String name, int ID, double price, boolean in_stock, boolean food){
  Food newFood = new Food(name, ID, price, in_stock, food);
    inven.add(newFood);
}

//Add Non food item
public static void addNonFood(String name, int ID, double price, boolean in_stock, boolean food){
    NonFood newNonFood = new NonFood(name, ID, price, in_stock, food);
    inven.add(newNonFood);
}

//Delete inventory
public static void delInven(int num){
    inven.remove(num);
}

 //Print Inventory
public static void printInven(){
    for(int i = 0; i < inven.size(); i++){
        System.out.println(i+1 + " " + inven.get(i));
    }
}


//Clear Inventory
public static void clearInven(){
    inven.clear();
}

//Replace item
//Polymorphism for food and non food items
public static void replaceNewNonFoodInven(int n, String name, int ID, double price, boolean in_stock, boolean food){
    NonFood newNonFood = new NonFood(name, ID, price, in_stock, food);
    inven.set(n, newNonFood);
}    
publicstaticarraylistinven=newarraylist();
扫描仪扫描=新扫描仪(System.in);
私有字符串名称;
私有静态int-ID;
私人双价;
私有布尔库存;
私人食品;
公共静态void main(字符串[]args){
对于(int i=0;i<2;i++){
addFood(“Food”+i,i,100+i,true,true);
}
对于(int i=0;i<2;i++){
添加非食品(“非食品”+i,i,100+i,真,真);
}
printInven();
}
//添加食物项
公共静态void addFood(字符串名称、整数ID、双倍价格、布尔库存、布尔食品){
食品新食品=新食品(名称、ID、价格、库存、食品);
投资添加(新食品);
}
//添加非食物项
公共静态void addNonFood(字符串名称、整数ID、双倍价格、布尔库存、布尔食品){
NonFood newNonFood=新非食品(名称、ID、价格、库存、食品);
投资增加(新非食品);
}
//删除库存
公共静态void delInven(int num){
inven.remove(num);
}
//打印库存
公共静态void printInven(){
对于(int i=0;i

}

您的问题不清楚。你想做一些你已经做过的事情,并为一种不再相关/使用的方法解释一个问题。你现在的问题是什么?你的代码中有很多毫无意义的“x=x”赋值,这让我觉得你对名称的范围都没有很好的把握,或者实例变量和类变量之间的区别。如果您只创建一个实例化的清单,而不考虑使用static来实现这一点,那么会容易得多。我正在尝试打印ArrayList中的对象。当我现在打印它时,它会输出
project。Food@7cc355be
是的,我还没有很好地掌握java。我在上高中,刚开始学习Java。如果我实例化Inventory类,我是否也能实例化Food和NonFood类?如有任何建议,将不胜感激!这回答了你的问题吗?