-1

私のプログラムでは、いくつかのカスタム変数をテキスト ファイルから読み込んで使用しています。これを行うメソッドです。

public int[] getGameSettings() {
String[] rawGame = new String[100];
String[] gameSettingsString = new String[6];
int[] gameSettings = new int[6];
int finalLine = 0;
int reading = 0;

try{
    // Open the file that is the first 
    // command line parameter
    FileInputStream fstream = new FileInputStream("gameSettings.txt");
    BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
    String strLine;
    //Read File Line By Line
    int line = 0;
    while ((strLine = br.readLine()) != null)   {
    // Store it
    rawGame[line] = strLine;
    line++;
    }
    //Close the input stream
    in.close();
    reading = line;
        }catch (Exception e){//Catch exception if any
    System.err.println("Error: " + e.getMessage());
    }

    for (int a = 0; a < reading; a++) {
        if (!rawGame[a].substring(0,1).equals("/")) {
        gameSettingsString[finalLine] = rawGame[a];
        finalLine++;
        }
    }
    for (int b = 0; b < finalLine; b++) {
    gameSettings[b] = Integer.parseInt(gameSettingsString[b]);
    }
return gameSettings;
}   

そのメソッドを別のクラスから呼び出し、配列を gameSettings として保存してから、次の操作を行います。

contestedMovementPercent = (gameSettings[1]/100);

gameSettings[1] を印刷すると、正確にあるべき姿になりますが、競合する動きは常に 0.0 に表示されます。conflictedMovementPercent は double です。gameSettings は両方のクラスで int の配列です。

私がしなければならないある種のキャストはありますか?int はこのように使用できると思いました。

4

3 に答える 3

6

int で除算しているため、最初に int として計算し、次に double に変換します。に変更するとgameSettings[1]/100.0、double として計算されます。

于 2013-06-20T19:20:26.840 に答える
0

次のことができます。

contestedMovementPercent = gameSettings[1] / 100.0;

浮動小数点数を除数として使用すると、除算の前に整数が自動的に浮動小数点数にキャストされます。

于 2013-06-20T19:22:19.447 に答える
0

2 つの int を分割すると、double に割り当てられる前に int にキャストされます。int は整数のみなので、この場合は 0 か 1 です。

他の回答で述べたように、どちらかの側をダブルにすると、除算の結果がダブルになります(したがって、gameSettings [1] / 100.0)。

于 2013-06-20T19:23:16.323 に答える