【问题标题】:store double variable values in to list<string> [closed]将双变量值存储到 list<string> [关闭]
【发布时间】:2015-02-26 08:11:01
【问题描述】:

我正在处理具有非常大数据集的 csv 文件。在阅读文件时,我提取了第三名(BALANCE)';'用while循环迭代从每行中分离数值。我想将这些值(BALANCE)存储到listOF字符串中。我该怎么做。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.*;
public static void main(String[] args)throws IOException {
        String filename = "bank-full.csv";
        File file = new File(filename);
        try {
            Scanner inputStream = new Scanner(file);
            inputStream.next();
            int count=0;
      while (inputStream.hasNext()) 
          {
            String data = inputStream.next();         
            String[] values = data.split(";");
            double BALANCE = Double.parseDouble(values[2]);
            System.out.println(BALANCE);
            inputStream.close();
          } 
      catch (FileNotFoundException ex) {
            Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
   }

【问题讨论】:

  • 请具体说明;你有什么问题?
  • 我在字符串列表中进行了更改。实际上它在代码部分中没有显示符号“”。所以它丢失了。
  • 为什么如果你在读取过程中解析双精度,你需要列表是 list 而不是 list
  • 实际上我不知道 list 这就是我尝试在 list 中使用的原因。
  • 如果您想将它们存储在字符串列表中,为什么要将它们解析为双倍 double BALANCE = Double.parseDouble(values[2]);

标签: java file csv filereader opencsv


【解决方案1】:

将双变量值存储到列表中

像这样:

List<String> l = new ArrayList<String>();
l.add(Double.toString(42.0));

或者,如果您尝试构建双精度列表,则使用包装器类型,如下所示:

List<Double> l = new ArrayList<Double>();
l.add(42.0);  // The double will be autoboxed as a Double.

【讨论】:

    【解决方案2】:

    如果要将余额值保存在字符串列表中,可以直接将它们添加到其中,如下所示:

    List<String> balancesList = new ArrayList<String>();
    

    在你的 while 循环中:

     String data = inputStream.next();         
     String[] values = data.split(";");
     balancesList.add(values[2]); //Just add it to the list here
    

    因为 values[2] 中的 余额值字符串

    【讨论】:

      【解决方案3】:
      String filename = "bank-full.csv";
                  List<Double> list = new ArrayList<Double>();
                  File file = new File(filename);
                  try {
                      Scanner inputStream = new Scanner(file);
                      inputStream.next();
                      int count = 0;
                      while (inputStream.hasNext()) {
                          String data = inputStream.next();
                          String[] values = data.split(";");
                          double BALANCE = Double.parseDouble(values[2]);
                          list.add(BALANCE);
                          System.out.println(BALANCE);
                          inputStream.close();
                      }
                  }
                      catch (FileNotFoundException ex) {
                          Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, ex);
                      }
                  }
      

      【讨论】:

        【解决方案4】:

        您可以将列表初始化为保存类型“Double”,也可以将双精度类型转换为字符串,然后再将它们添加到列表中。这或多或少取决于您计划如何使用该列表。你会将信息作为列表中的双精度存储回来吗?或者您是否允许用户以字符串的形式编辑值?仅举几个例子。

        【讨论】:

        • 实际上在列出列表后我想以相反的顺序存储这些值(BALANCE)..
        • 哦,好的。好吧,我看到您找到了可以帮助您的答案。祝您的软件开发顺利!
        【解决方案5】:

        尝试使用ArrayListLinkedList:它们都扩展了AbstractList,因此它们具有add(T) 方法,其中T 可以是任何对象类型(在您的示例中为Double)。
        在您的情况下,您应该这样做:

        List<Double> container = new ArrayList<Double>();
        while (inputStream.hasNext()) {
            String data = inputStream.next();
            String[] values = data.split(";");
            double BALANCE = Double.parseDouble(values[2]);
            System.out.println(BALANCE);
            container.add(BALANCE);
        }
        inputStream.close();
        //now "container" contains all balance values
        

        另外,你不应该在读取时关闭输入流,在 while 循环之后关闭它。

        如果您想以相反的顺序存储它们,请使用此add method,它允许您在列表的每个位置添加一个元素,因此您可以这样做:

        container.add(container.size(), BALANCE);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-05-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-13
          • 1970-01-01
          相关资源
          最近更新 更多