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

时间:2014-08-14 22:51:37

标签: java variables methods main procedure

来源:

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

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

3 个答案:

答案 0 :(得分:3)

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

您的问题的解决方案是在更高级别定义变量(这里是实例范围)或将包装类型传递给您的方法(例如int具有相应的引用类型{{ 1}})。后一种方法是我不建议你这样做的。

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

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

但不,你不能嵌套方法。

答案 1 :(得分: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;
    }
}

答案 2 :(得分:0)

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

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

    }
}

解决。非常感谢你!