如何打印也具有双变量的字符串数组?

时间:2017-07-25 22:19:36

标签: java

已编辑以删除多余的代码并显示我收到的确切错误。

我试图以网格格式(如电子表格)显示我的数组。我已经声明它是一个字符串数组,所以我可以使用readLine和split,但是7列中有6列是双精度数。 我一直在所有数组变量上遇到不兼容的类型错误。 更具体地说:不兼容的类型:int不能转换为字符串,无法比较的类型int和字符串和不兼容的类型字符串不能转换为double我是新的,当我在这里研究时,我找不到如何解决这个问题。 这是我的代码:

         while(s != null) {
          array = s.split(delimiter);
          dates = array[0];
          dates = Integer.parseInt(array[0]);
          double[] nums = new double[array.length];
          for (int i = 0; i < nums.length; i++) {
          nums[i] = Double.parseDouble(array[i]);
          }       
          if(dates != 0)  {
            open = array[1];
            high = array[2];
            low = array[3];
            close = array[4];
            adjClose = array[5];
            volume = array[6];

1 个答案:

答案 0 :(得分:4)

Java是静态类型语言。你不能只是拿一根绳子假装它是双倍的。 String[]变量总是将包含字符串。它可能包含看起来像双打的字符串,但它们总是字符串。

String[] array = ...;
double x = array[0];

这是一个类型错误,因为我们从数组中提取一个字符串,并要求系统简单地假装它是一个double,这是不会做的。

String[] array = ...;
double x = Double.parseDouble(array[0]);

这会将字符串值转换为double。如果你得到的数据来自可靠的来源(例如,如果它是一个类,而你的老师承诺数据是有效的),那就没关系。但是,如果数据来自用户或其他来源,Double.parseDouble将在数据无效时抛出异常,并且您需要考虑在特定情况下处理该数据的正确方法。

为了完整起见,这是相反的转换。

String string = x.toString();

任何对象(以及通过Java编译器的技巧,任何原语)都可以调用toString,这会将对象转换为字符串。