在 Java 中是不是可以在 main 方法中创建一个过程?

Posted

技术标签:

【中文标题】在 Java 中是不是可以在 main 方法中创建一个过程?【英文标题】:In Java is it possible to create a procedure in the main method?在 Java 中是否可以在 main 方法中创建一个过程? 【发布时间】:2014-10-08 17:45:59 【问题描述】:

来源:

import java.util.Scanner;

class Test1
    public static void main(String[] args)
        int x,y,ir;
        x = 10;
        y = 5;
        Scanner scan = new Scanner(System.in);
        ir = scan.nextInt();

        switch(ir)
            case 1: y++;
                break;
            case 2: y--;
                break;
            case 3: x++;
                break;
            case 4: x--;
                break;
        
    

我想把这部分重复几次:

switch(ir)
    case 1: y++;
        break;
    case 2: y--;
        break;
    case 3: x++;
        break;
    case 4: x--;
        break;

但我不想写不止一次。这就是为什么我想把它写成一个过程或一个方法。有没有办法编写一个可以修改我的主要方法中的变量的方法?

【问题讨论】:

***.com/questions/4600974/… 可能重复? 不,您不能将一种方法放在另一种方法中(缺少匿名类的一些奇怪的东西)。但是,包含 main 方法的 class 可以拥有任意数量的其他方法。 另一种解决方案是制作 xy 静态字段,以便您可以从 Test1 中的另一个静态方法修改它们,您从 main 调用。 不,您不能创建“在主方法中的过程”,但是您可以在 Test1 类中创建一个静态方法,该方法可以从主方法中调用 请不要破坏您的问题 【参考方案1】:

在你的情况下你不能,因为你正在使用primitive types。但是,如果您使用引用类型,则可以在将其传递给另一个方法时修改其内容。

解决问题的方法是在更高级别定义变量(此处为实例范围)或将包装器类型传递给您的方法(例如 int 具有相应的引用类型 Integer) .不过,我不建议您使用后一种方法。

另一种可能更有趣的解决方案是将其包装在 a loop 中的 main 方法中。我并不完全清楚你要做什么,但你一定要看看它是否可以像这样解决。

请注意,您正在使用 main 方法,因此您要调用的任何方法都必须是 static。正确的代码不会这样做,而是使用对象和实例方法。

但是不行,你不能嵌套方法。

【讨论】:

【参考方案2】:

您可以通过在提供该功能的 main 方法中创建一个类来做到这一点。

一个简单的例子:

class Test1 
    public static void main(String[] args) 
        int x = 0;
        int y = 0;        

        class MyClass 
            public int x;
            public int y;

            MyClass() 
                x = 0;
                y = 0;
            

            public void doSomething() 
                x++;
                y++;
            
        

        MyClass myClass = new MyClass();

        myClass.doSomething();
        myClass.doSomething();
        myClass.doSomething();

        x = myClass.x;
        y = myClass.y;
    

【讨论】:

我同意,这不是一个很好的解决方案,最好避免。 呵呵,我不知道你可以在方法中创建这样的类。我当然知道匿名内部类,但这对我来说是一个新的。【参考方案3】:

它使用静态变量。 我的表格:

import java.util.Scanner;

class a
    public static int x = 10;
    public static int y = 10;


    public static void lep(int ir)
        switch(ir)
            case 1: y++;
                break;
            case 2: y--;
                break;
            case 3: x++;
                break;
            case 4: x--;
                break;
        
    

    public static void main(String[] args)
        Scanner scan = new Scanner(System.in);
        int ir = scan.nextInt();
        lep(ir);
        System.out.println("x: " + x + " y: " + y);

    

解决了。非常感谢!

【讨论】:

这不是你所要求的,但我很高兴你明白了。 问题的目的是:如何修改 main 方法中的变量?抱歉,如果问题不好或无法理解,但您也可以帮助我。

以上是关于在 Java 中是不是可以在 main 方法中创建一个过程?的主要内容,如果未能解决你的问题,请参考以下文章

使用在另一个Class的main方法中创建的实例

在没有 Maven 的 Eclipse 中创建 src/main/java 文件夹结构

idea servlet不能创建main方法?

java中创建解析json

需要代码在java中创建连接池

在java中创建一个rectangle类,使其有width,height两个属性,并且包含?两个方