在Java中,可以在main方法中创建过程



来源:

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;
}

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

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

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

另一种解决方案(可能更有趣(是将其包装在main方法中的循环中。我不完全清楚你想做什么,但你绝对应该看看是否可以这样解决。

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

但是不,您不能嵌套方法。

您可以通过在提供该功能的 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;
    }
}

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

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);
    }
}

解决。谢谢!

相关内容

  • 没有找到相关文章

最新更新