我正在制作一个程序,我正在从一个文件中读取摄氏温度列表,将它们加载到一个数组中,并最终加载另一个具有相应华氏温度的阵列,每个摄氏温度。
当试图打印fahrArray时,而不是显示转换为华氏度到摄氏度的实际温度,我得到了这个
[D@3d3b10b1>
这是我到目前为止的代码。
import java.util.Scanner;
import java.io.*;
public class BonusLab {
public static void main(String[] args) throws IOException {
createdBy();
double[] celArray = loadCelArray();
printArray(celArray);
double[] fahrArray = loadFahrArray(celArray);
} // end main
public static void createdBy() {
System.out.println("Program created by-Beth Tanner");
} // end createdBy
public static double[] loadCelArray() throws IOException {
Scanner fin = new Scanner(new File("weather.txt"));
int x = fin.nextInt();
double[] celArray= new double[x];
for(int i = 0; i < celArray.length; i++)
celArray[i] = fin.nextDouble();
return celArray;
} // end loadCelArray
public static void printArray(double[] celArray) {
for(int i = 0; i < celArray.length; i++)
System.out.print(celArray[i] + " ");
} // end printArray
public static double[] loadFahrArray(double[] celArray) throws IOException {
Scanner fin = new Scanner(new File("weather.txt"));
double celsius =
int x = fin.nextInt();
double[] fahrArray = new double[x];
for(int i = 0; i < fahrArray.length; i++)
fahrArray[i] = (9 / 5) * celsius + 32;
return fahrArray;
} // end loadFahrArray
} // end class
非常感谢任何帮助或建议。
答案 0 :(得分:2)
如果我理解你的代码是正确的,我认为你应该改变这段代码
for(int i = 0; i < fahrArray.length; i++)
fahrArray[i] = (9 / 5) * celsius + 32;
到
for(int i = 0; i < fahrArray.length; i++)
fahrArray[i] = (9 / 5.0) * celArray[i] + 32;
您正尝试在未定义i的位置访问celArray [i]。在for-loop中,i被定义并且应该处于相同的位置。
另一个解决方案是,您可以省略文件的第二次扫描,因为您已经加载了值。所以循环通过calArray就足够了。
编辑: user3008950现在提供了我写的第二种可能性。
答案 1 :(得分:0)
public static double[] loadFahrArray(double[] celArray){
double[] result=null;
if(celArray!=null){
result=new double[celArray.length];
for(int i = 0; i < celArray.length; i++){
result[i] = (9 / 5.0) * celArray[i] + 32;
}
}
return result;
}