Java:一次传递变量,但传递不同的值

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

我是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.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”方法也能做到这一点吗?