Java:一次传递变量,但传递不同的值
我是Java新手,我有一个问题 我可以在不创建新对象的情况下多次将变量传递给方法吗 例如,如果我有一个变量x是用户输入,另一个变量m和一个方法是:如果x是“h”,那么m是“example1”,如果x是“f”,那么m是“example2” 如果我写:Java:一次传递变量,但传递不同的值,java,Java,我是Java新手,我有一个问题 我可以在不创建新对象的情况下多次将变量传递给方法吗 例如,如果我有一个变量x是用户输入,另一个变量m和一个方法是:如果x是“h”,那么m是“example1”,如果x是“f”,那么m是“example2” 如果我写: String x = Scanner.next(); 我创建了一个传递x变量的对象,当我写的时候 System.out.println(obj.m); 如果输入为h,它将打印“example1” 但如果在我出现后写下: x = Scanner.n
String x = Scanner.next();
我创建了一个传递x变量的对象,当我写的时候
System.out.println(obj.m);
如果输入为h,它将打印“example1”
但如果在我出现后写下:
x = Scanner.next();
System.out.println(obj.m);
无论我写下什么字符,输出都将是“示例1”
如果我第一次输入“f”,输出将是“example2”
但是如果我第二次键入“h”,第二个system.out.println()最终将打印“example2”
那么,在不创建新对象的情况下,是否可以只传递一次带有随时间变化的值的变量?根据我对您问题的理解,我添加了一个解决方案,该解决方案将创建您提到的对象一次,并在您输入值时重复调用其中的方法。这可能对你有帮助
import java.util.Scanner;
public class A {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ClassOfYourObject object = new ClassOfYourObject();
while (true) {
System.out.print("Enter letter : ");
String x = scanner.next();
object.yourMethodToPrint(x);
}
}
}
class ClassOfYourObject {
void yourMethodToPrint(String value) {
if (value.equals("h")) {
System.out.println("example1");
} else if (value.equals("f")) {
System.out.println("example2");
} else {
System.out.println("Invalid letter");
}
}
}
正如我理解您的问题一样,我添加了一个解决方案,该解决方案将创建您曾经提到的对象,并在输入值时重复调用其中的方法。这可能对你有帮助
import java.util.Scanner;
public class A {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ClassOfYourObject object = new ClassOfYourObject();
while (true) {
System.out.print("Enter letter : ");
String x = scanner.next();
object.yourMethodToPrint(x);
}
}
}
class ClassOfYourObject {
void yourMethodToPrint(String value) {
if (value.equals("h")) {
System.out.println("example1");
} else if (value.equals("f")) {
System.out.println("example2");
} else {
System.out.println("Invalid letter");
}
}
}
如果我正确理解了您的问题,那么是的,您可以多次将变量传递给方法,而无需创建新对象。假设您创建了这样一个类:
public class Test {
public String m;
public void testMethod(String x) {
if ("h".equals(x)) {
m = "example1";
} else if ("f".equals(x)) {
m = "example2";
} else {
m = "other";
}
}
}
如果您在主方法中从此类创建了一个对象,并传入不同的x
值作为testMethod()
的参数,则m
的值将发生变化:
public class MainClass {
public static void main(String[] args) {
Test obj = new Test();
String x = "h";
obj.testMethod(x);
System.out.println(obj.m); // prints example1
x = "f";
obj.testMethod(x);
System.out.println(obj.m); // prints example2
}
}
如果我正确理解了您的问题,那么是的,您可以多次将变量传递给方法,而无需创建新对象。假设您创建了这样一个类:
public class Test {
public String m;
public void testMethod(String x) {
if ("h".equals(x)) {
m = "example1";
} else if ("f".equals(x)) {
m = "example2";
} else {
m = "other";
}
}
}
如果您在主方法中从此类创建了一个对象,并传入不同的x
值作为testMethod()
的参数,则m
的值将发生变化:
public class MainClass {
public static void main(String[] args) {
Test obj = new Test();
String x = "h";
obj.testMethod(x);
System.out.println(obj.m); // prints example1
x = "f";
obj.testMethod(x);
System.out.println(obj.m); // prints example2
}
}
你的问题没有道理。我们不知道什么是obj。发布MCVE。你能展示一下“m”是如何赋值的逻辑吗?最可能的情况是,每次更改
x
的值时,您都需要评估m
赋值,因为您的问题没有意义。我们不知道什么是obj。发布MCVE。你能展示一下“m”是如何赋值的逻辑吗?最可能的情况是,每次更改x
的值而不是x.equals(“h”)时,您都需要计算m
赋值,我总是使用“h”。equals(x),因为即使x为null,它也可以工作。没有NullPointerException。非常感谢您的回答!但是一个“Setter”方法也能做到这一点吗?我总是用“h”.equals(x)代替x.equals(“h”),因为即使x为null它也能工作。没有NullPointerException。非常感谢您的回答!但是一个“Setter”方法也能做到这一点吗?