在 main 方法中使用 getter 和 setter

Using getter and setter in main method

public class Testing {

    public static void main(String[] args) {
        String test=("test");
        Scanner type = new Scanner(System.in);
        String theTest = type.next();
        switch(theTest) {
            case "test":
                int input = type.nextInt();
                System.out.println("OK");
        }
    }
}
public class TestingB {
    private int finalInput;
    finalInput=input; // I want to give finalInput the value of input
}

好的所以这段代码将用户在“测试”之后输入的int保存在变量input.

我的问题是如何获取包含 int 值的变量 input 并更新另一个 class 中的另一个 int 值?

我尝试使用 setter 和 getter 但我不能在主要方法中使用它,还是我误解了什么?

所以除了在静态上下文中运行的主要方法。 Java 中的所有 classes 都需要实例化,这意味着从 class (https://www.javatpoint.com/instantiation-in-java) 中创建一个新对象,在 java 中使用 new关键词。像这样:

TestingB testingB = new TestingB();

现在当对象被实例化时,我们不仅有一个class。我们有一个由 class 制成的对象。 class 定义了对象,但我们可以从同一个 class 中创建多个对象。将 class 视为塑造菜肴的食谱。

并不是说我们已经涵盖了 class 和 object 之间的区别,我们需要讨论您提到的 getter 和 setter。在 class 中,一个值可以有 getters 和 setters 允许其他对象设置或获取它们的值

对于 int 的 getter 可能如下所示:

public int getInput() {
   return this.input;
}

A setter 设置值如下所示:

public void setInput(int input) {
   this.input = input
}

在这种情况下,输入称为字段,setter 和 getter 可以设置或获取该字段。使用的“this”关键字指向对象。所以 this.input 是 class 顶部的字段,而 input 只是方法签名中传递的参数。

有多种方法可以将值解析为对象,您也可以将其作为构造函数中的参数来执行(例如:https://beginnersbook.com/2013/03/constructors-in-java/)。但这可能是另一个问题的主题。

将 getter 和 setter 与您提供的代码放在一起,我们最终得到:

public class Main {
 
    public static void main(String[] args) {
        String test = "test"; // I removed the parenthesis they have no function
        Scanner scanner = new Scanner(System.in); //I named the scanner as scanner
        String theTest = scanner.next();
        switch (theTest) {
            case "test":
                System.out.println("Please provide a number also");
                int intput = scanner.nextInt();
                TestingB testing = new TestingB();
                testing.setFinalInput(intput);
                System.out.println("OK: The number from testing is: " + testing.getFinalInput()) ;
                break;
        }
    }
}
 

public class TestingB {
    private int finalInput;
 
    public int getFinalInput() {
        return finalInput;
    }
 
    public void setFinalInput(int finalInput) {
        this.finalInput = finalInput;
     }
}


我发现你的语法有几个错误。 switch 语句都没有正确关闭,您在 class 中输入的方式也不起作用。我不知道您使用哪个编辑器或 IDE,但我认为选择一个好的编辑器可以帮助您改进。如果你正在学习,你可以考虑 java 的 BlueJ 或 Greenfoot。但即使是像 IntelliJ 这样更复杂的 IDE 也会帮助你。尽管习惯于查看彩色代码并拥有一些基本的自动完成功能似乎很复杂,但它有助于防止您尝试新事物时出现反馈循环,让您了解它是否正确更短,最终有助于使学习曲线不那么陡峭。