阵列打印不正确

时间:2013-12-04 22:46:11

标签: java arrays

我正在制作一个程序,我正在从一个文件中读取摄氏温度列表,将它们加载到一个数组中,并最终加载另一个具有相应华氏温度的阵列,每个摄氏温度。

当试图打印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

非常感谢任何帮助或建议。

2 个答案:

答案 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;
}