Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从一个类更改另一个类中变量的值?JAVA_Java_Variables_Command Line Arguments_Instance Variables - Fatal编程技术网

如何从一个类更改另一个类中变量的值?JAVA

如何从一个类更改另一个类中变量的值?JAVA,java,variables,command-line-arguments,instance-variables,Java,Variables,Command Line Arguments,Instance Variables,我在获取一个类中声明的变量以从另一个类更新时遇到问题。这在Java中可能吗 下面是我希望在其中更改值的类的一部分 public class DrawMaze { // Width of border in pixels public static int borderwidth = 40; // Size of maze cell in pixels public static int cellsize = 30; // Time to sleep after

我在获取一个类中声明的变量以从另一个类更新时遇到问题。这在Java中可能吗

下面是我希望在其中更改值的类的一部分

public class DrawMaze {
   // Width of border in pixels
   public static int borderwidth = 40;

   // Size of maze cell in pixels
   public static int cellsize = 30;

   // Time to sleep after a move (in milliseconds)
   // Change to default to 50. 1000 gives time to observe the program.
   public static int sleep time = 1000;
}
这里是我第二个类的一部分,其中使用命令行参数更改
cellsize
borderwidth
sleeptime
的值

public class MazeSolver {
    // Get the cell size, border width, and/or the sleep time if available 
   try{
       if (args.length >= 2){
           DrawMaze.cellsize = Integer.parseInt(args[1]);
           if (!(DrawMaze.cellsize >= 10)){
              System.out.println("Cellsize must be an integer greater than or equal to 10."); 
           }
       }
       if (args.length >= 3){
           DrawMaze.borderwidth = Integer.parseInt(args[2]);
           if (!(DrawMaze.borderwidth >= 5)){
                  System.out.println("Borderwidth must be an integer greater than or equal to 5."); 
           }
       }
       if (args.length == 4){
           DrawMaze.sleeptime = Integer.parseInt(args[3]);
           if (!(DrawMaze.sleeptime >= 0) && !(DrawMaze.sleeptime <= 10000)){
                  System.out.println("sleeptime must be an integer in the range of 0 to 10,000."); 
           }
       }
}
公共类MazeSolver{
//获取单元格大小、边框宽度和/或睡眠时间(如果可用)
试一试{
如果(args.length>=2){
DrawMaze.cellsize=Integer.parseInt(args[1]);
如果(!(DrawMaze.cellsize>=10)){
System.out.println(“Cellsize必须是大于或等于10的整数”);
}
}
如果(参数长度>=3){
DrawMaze.borderwidth=Integer.parseInt(args[2]);
如果(!(DrawMaze.borderwidth>=5)){
System.out.println(“Borderwidth必须是大于或等于5的整数”);
}
}
如果(args.length==4){
DrawMaze.sleeptime=Integer.parseInt(args[3]);

如果(!(DrawMaze.sleeptime>=0)和(&!(DrawMaze.sleeptime),您的代码唯一的问题是
args.length=4
应该是
args.length==4
。如果它没有按照您的预期工作,请添加更多信息以澄清问题并使回答更容易。请注意,如果相关,args[0]的变量未显示,但它在我的代码中仅作为字符串存在。其他参数[1]、[2]和[3]所有的整数都是为所示代码中的变量所接受的。这是一个非常糟糕的实践,你所做的是全局状态的函数编程,所有这些都是反对OOP的。考虑使用共享的状态的实例化类和对象。如果你的应用程序需要相同的对象,那么总是会得到相同的对象。谢谢,JavaNut13,我会尝试进一步澄清。老实说,我不完全确定我在做什么。我的老师给了我部分完成的代码,并给出了使其正常工作的说明。你的代码唯一的问题是
args.length=4
应该是
args.length]==4
。如果它没有按您预期的方式工作,请添加更多信息以澄清问题并简化回答。请注意,如果相关,args[0]的变量未显示,但它在我的代码中仅作为字符串存在。其他参数[1]、[2]和[3]所有的整数都是为所示代码中的变量所接受的。这是一个非常糟糕的实践,你所做的是全局状态的函数编程,所有这些都是反对OOP的。考虑使用共享的状态的实例化类和对象。如果您的应用程序需要相同的对象,则始终会得到相同的对象。谢谢,JavaNut13,我将尝试进一步澄清。老实说,我不完全确定我在做什么。我的老师给了我部分完成的代码,并给出了使其正常工作的说明。