使用Kotlin中的方法为variables赋值一个新的值?

在Java中,我可以使用[class-name]。[method]来更改类中variables的值,如下所示:

public class Main { public static void main(String[] args) { // Prints "Hello, World" to the terminal window. test.teste(); test.printlnvar(); } } class test{ public static int a = 0; public static int b = 0; public static void teste(){ a = 9; b = 12; } public static void printlnvar(){ System.out.println("the value of A: " + a); System.out.println("the value of B: " + b); } } 

但是,我怎样才能做到这一点在科特林? 我尝试但结果总是为0variablesIntColumn和IntRow在代码如下:

 public class drawTriangle{ public var IntColumn:Int = 0; public var IntRow:Int = 0; fun drawTriangle(){ this.inputRowandColumn(); this.Printvalue(); } fun inputRowandColumn(){ IntColumn = 12; IntRow = 3; } fun Printvalue(){ println("the value of rows is: ${IntRow}"); println("the value of column is: ${IntColumn}"); } } fun main(args: Array){ drawTriangle().inputRowandColumn(); drawTriangle().Printvalue(); } 

在你的main函数中,你创建了两个独立的drawTriangle类实例,因此有两组variables – 其中一个是你改变的,一个是你打印的。 一个简短的修复:

 fun main(args: Array){ val d = drawTriangle() d.inputRowandColumn() d.Printvalue() } 

PS您的Kotlin代码与您的Java代码大不相同。 在你的Java代码片段中,你使用了2个属于类的static字段。 但在Kotlin片段中,您使用了2个成员属性,这些属性需要存储实例。

PPS你的Kotlin代码有点像C#。 学习一种新的语言时,使用该语言的命名约定并不是一个坏主意;)

我不知道你为什么要做你正在做的事情。 按照voddan,你的代码是不相同的。 Java正在使用与类关联的静态属性,而不是实例,因此您可以直接从静态“主”方法访问它们。

Kotlin将类(静态)项与实例项目分开。 如果你定义一个类,你只能实例化实例并使用它们。

如果你真的想在Kotlin中实现你的尝试,你需要使用“对象”而不是“类”。 Kotlin中的一个对象是一个单身人士。 以下是你如何写在Kotlin。

 object drawTriangle { var intColumn: Int = 0 var intRow: Int = 0 fun drawTriangle() { this.inputRowandColumn() this.printvalue() } fun inputRowandColumn() { intColumn = 12 intRow = 3 } fun printvalue() { println("the value of Rows is: $intRow") println("the value of Column is: $intColumn") } } fun main(args: Array) { drawTriangle.inputRowandColumn() drawTriangle.printvalue() } 

请注意,我删除了“公开”,因为Kotlin的默认是公开的。 删除了分号,并重命名为符合Kotlin命名标准。