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

有争议的动作总是以 0.0 显示,即使我打印 gameSettings[1] 它也完全符合它应该的样子。有争议的MovementPercent 是双倍的。gameSettings 是两个类中的 int 数组。

我需要做某种类型的演员吗?我认为 int 可以这样使用。

4

3 回答 3

6

您正在除以 int,因此它首先将其计算为 int,然后将其转换为 double。将其更改为gameSettings[1]/100.0会将其计算为双精度数。

于 2013-06-20T19:20:26.840 回答
0

您可以执行以下操作:

contestedMovementPercent = gameSettings[1] / 100.0;

通过使用浮点数作为除数,整数在除法之前自动转换为浮点数。

于 2013-06-20T19:22:19.447 回答
0

在分配给双精度之前,将两个整数相除将被转换为一个整数。而 int 只能是一个整数,所以在这种情况下,0 或 1。

正如在其他答案中提到的那样,使任何一方成为双倍将使除法的结果成为双倍(所以 gameSettings[1] / 100.0)。

于 2013-06-20T19:23:16.323 回答