来源:
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);
}
}
解决。谢谢!