【问题标题】:Array not printing correctly阵列未正确打印
【发布时间】:2013-12-04 22:46:10
【问题描述】:

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

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

任何帮助或建议将不胜感激。

【问题讨论】:

  • double celsius = 我相信这是错字?
  • 请修正您的格式!
  • “找不到符号/变量(称为 i)”和“不兼容的类型(无法将 double[] 分配给 double)” - 听起来很清楚
  • double celsius = celArray[i] 是正确的想法,但您确实想不止一次这样做,对吧,因为您需要为celArray 的每个元素执行此操作?所以将它移到for 循环中。您将需要添加花括号。
  • 我没有看到打印 fahrArray 的代码,但我很肯定您正在打印数组而不是数组中的值。

标签: java arrays


【解决方案1】:

如果我理解你的代码是正确的,我认为你应该改变这个代码

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 循环中 i 被定义并且应该在相同的位置。

另一个解决方案是,您可以省略文件的第二次扫描,因为您已经加载了值。所以循环 calArray 就足够了。

编辑: user3008950 现在提供了我写的第二种可能性。

【讨论】:

  • 谢谢,这纠正了我原来的问题,我已经用我当前的问题更新了这个问题。
  • 它不会给你正确的答案。 9/5 总是会产生1,使用9/5.0 得到1.8
  • @Smit 没错,我只是想更正代码。我会更新我的答案。
【解决方案2】:
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;
}

【讨论】:

    猜你喜欢
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 2016-07-20
    • 2018-09-25
    • 1970-01-01
    • 2014-07-19
    • 2021-05-14
    相关资源
    最近更新 更多