在我的程序中,我从文本文件中加载一些自定义变量以供使用。这是执行此操作的方法。
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]它确实出现了它应该是什么。 contestedMovementPercent是一个双倍。 gameSettings是两个类中的int数组。
我需要做某种演员吗?我认为int可以像这样使用。
答案 0 :(得分:6)
你要用int来划分,所以它首先将它计算为int然后将其转换为double。将其更改为gameSettings[1]/100.0
会将其计算为双倍。
答案 1 :(得分:0)
您可以执行以下操作:
contestedMovementPercent = gameSettings[1] / 100.0;
通过使用float作为除数,整数在除法之前自动转换为浮点数。
答案 2 :(得分:0)
在将两个整数分配给double之前,它将被转换为int。并且int只能是整数,所以在这种情况下,0或1。
正如其他答案中所提到的,任何一方都是双重会使得除法的结果变为双倍(所以gameSettings [1] / 100.0)。