2017-11-26 5 views
2

は、私は[クラス名]を使用することができます[方法]のようなクラス内の変数の値を変更するには:。Kotlinのメソッドを使用して変数に新しい値を割り当てますか? Javaでは

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); 
    } 
} 

しかし、私はKotlinでいることをどのように行うことができますか?私がしようとしたが、結果は下記常に0変数IntColumnとIntRowためのコードである:あなたのmain機能で

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<String>){ 
    drawTriangle().inputRowandColumn(); 
    drawTriangle().Printvalue(); 
} 

答えて

2

あなたがdrawTriangleクラスの2つの別々のインスタンスを作成し、これ変数の2セットがあります - そのうちの一つは、あなたが変更すると、そのうちの1つが印刷されます。短い修正:

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

P.S.あなたのKotlinコードはJavaコードとは大きく異なります。あなたのJavaスニペットでは、クラスに属する2 staticフィールドを使用します。しかし、Kotlinスニペットでは、インスタンスを格納する必要のある2つのメンバープロパティを使用します。

P.P.SあなたのKotlinコードはC#のように見えます。新しい言語を学ぶときには、その言語の命名規則を使用することは悪い考えではありません)

+0

あなたの答えをありがとう。しかし、他の方法はありますか? – blogtrai

0

あなたは何をやっているのかわかりません。 voddanごとに、コードは同等ではありません。 Javaでは静的な 'main'メソッドから直接アクセスすることができるため、インスタンスではなくクラスに関連付けられた静的変数を使用しています。

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<String>) { 
    drawTriangle.inputRowandColumn() 
    drawTriangle.printvalue() 
} 

私はKotlinのデフォルトが公開されているので「public」を削除しました。セミコロンを削除し、Kotlinの命名基準に準拠するように名前を変更しました。

関連する問題