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