我的程序中有四个类,其中一个包含main() 但是在fruit,ch和demand变量的前三行中有一个错误。我想在每个类中使用这些变量。
import java.util.Scanner;
public static int fruit = 0;
public static int ch;
public static boolean demand = false;
class stock{
synchronized int getfruit(){
while(demand){
try{
wait();
}catch(InterruptedException e){
System.out.println("Wait fruits uploading");
}
System.out.println("cutomer got : " + ch);
demand = true;
notify();
}
return ch;
}
synchronized void putfruits(int ch){
while(!demand){
try{
wait();
}catch(InterruptedException e){
System.out.println("uploaded already");
}
System.out.println("Uploading your demand : "+ ch + " fruits");
demand = false;
notify();
}
}
}
class vendor implements Runnable{
stock obj;
public vendor(stock obj) {
// TODO Auto-generated constructor stub
this.obj = obj;
new Thread(this, "vendor").start();
}
@Override
public void run() {
// TODO Auto-generated method stub
obj.putfruits(ch);
}
}
class customer implements Runnable {
stock obj;
public customer(stock obj) {
// TODO Auto-generated constructor stub
this.obj = obj;
new Thread(this, "cutomer").start();
}
@Override
public void run() {
// TODO Auto-generated method stub
obj.getfruit();
}
}
public class Fruitmarket {
public static void main (String args[]){
stock obj2 = new stock();
System.out.println("Initially market no capacity");
System.out.println("Enter how much quantity you want ?");
Scanner in = new Scanner ( System.in);
ch = in.nextInt();
}
}
我该怎么做?我是java的初学者吗?
答案 0 :(得分:5)
此代码无法编译。您需要将这些变量放在类中:
import java.util.Scanner;
class stock {
public static int fruit = 0;
public static int ch;
public static boolean demand = false;
....
如果你想在外面访问这些变量,你可以这样做:stock.fruit
答案 1 :(得分:3)
如果要使用常量,可以声明一个接口,然后使用该接口将常量存储为public static final <type> <name>
编辑:您不应该实现界面,而只需调用它:InterfaceName.CONSTANT
将所有常量命名为所有大写字母也是一种好习惯。
编辑2:似乎自从java 5(我猜我真的过时了......)te static imports的使用被认为是更好的做法
答案 2 :(得分:2)
在Class定义之外,您无法声明变量。就像其他人说的那样,你需要在课堂上宣布它们。
如果它们是公开的并在类库中声明,您可以从任何其他类访问它们。如果它们是友好的(没有关键字,只有static int fruit = 0;),您可以从包中的任何类访问它们。如何访问它们取决于它们是否静止。静态字段可以通过引用类本身(例如stock.fruit)来访问,而对于非静态字段,您需要引用一个对象,该对象是持有该字段的类的实例。
现在,根据程序的上下文,我非常建议您在逻辑上放置变量。我并不完全确定需求和意图是什么意思,但只要知道你可以将它们放在任何类别,包括Fruitmarket,只要它们具有正确的访问级别修饰符(公共,友好等)和您尝试以正确的方式访问它们(如果它们是静态的,则通过声明类;如果它们是非静态的,则通过声明类的实例)