在 java 的静态方法中访问全局变量
access global variable in static method in java
有没有办法在静态方法中使用全局变量?我的目标是打印包含对象(食物和非食物)的 ArrayList 的内容。我认为 toString()
方法是打印它的最佳方式,但似乎无法让它工作。我曾尝试使用全局变量,但是当我使用 this.
关键字时,它说不能在静态上下文中使用它。这些方法必须是静态的,因为我不想实例化 class。有什么建议吗?
在 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);
}
}
您可以参考下面的代码。我希望这能解决您的疑问。
public class 非食品 {
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 +"'";
}
}
public class 食物 {
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 class库存{
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);
}
}
有没有办法在静态方法中使用全局变量?我的目标是打印包含对象(食物和非食物)的 ArrayList 的内容。我认为 toString()
方法是打印它的最佳方式,但似乎无法让它工作。我曾尝试使用全局变量,但是当我使用 this.
关键字时,它说不能在静态上下文中使用它。这些方法必须是静态的,因为我不想实例化 class。有什么建议吗?
在 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);
}
}
您可以参考下面的代码。我希望这能解决您的疑问。
public class 非食品 {
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 +"'";
}
}
public class 食物 {
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 class库存{
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);
}
}