当前位置: 首页 > 面试题库 >

将带有文本的String []转换为double []

长孙和悦
2023-03-14
问题内容

我有一个要转换为double []数组的Arraylist。我首先将Arraylist转换为String []。然后,我尝试将String
[]转换为double [],但在此过程中失败。这是问题所在:字符串包含一些文本以及一些带小数的数字。我只想将数字和小数转换为double
[]数组,然后简单地删除文本。但是,我只知道如何使用字符串而不是String []删除文本。请看一下:

import java.util.ArrayList;
import java.util.List;
import jsc.independentsamples.SmirnovTest;

public class example {
    public static void main(String[] arg) throws Exception {
        ArrayList<String> list1 = new ArrayList<String>();
        ArrayList<String> list2 = new ArrayList<String>();

        list1.add("RSP0001,1.11,1.22");
        list1.add("RSP0002,2.11,2.22");
        list1.add("RSP0003,3.11,3.22");
        list1.add("RSP0004,4.11,4.22");

        String[] str1 = new String[list1.size()];
        str1 = list1.toArray(str1);
        str1.replaceAll("RSP_\\d+","");
        double array1 = Double.parseDouble(str1);

        System.out.println(array1);
    }
}

由此产生两个错误:第一个错误是str1.replaceAll处的“找不到符号”错误。第二个是“ Double.parseDouble”处的“ method
parseDouble”错误。那里的问题是我需要一个String而不是String []。

关于如何将String []转换为double []的任何想法?

谢谢,

j


问题答案:

您需要在“,”上拆分list1中的每个String,然后尝试解析每个被拆分的String:

    ArrayList<Double[]> results = Lists.newArrayList();
    for( String s : list1 ) {
        String[] splitStrings = s.split(",");
        Double[] doublesForCurrentString = new Double[splitStrings.length];
        for(int i=0; i<splitStrings.length; i++){
            try {
                doublesForCurrentString[i] = Double.valueOf(splitStrings[i]);
            } catch( NumberFormatException ex ) {
                // No action.
            }
        }
        results.add(doublesForCurrentString);
    }
    Double[][] doubleArray = (Double[][])results.toArray();

关键点:

  • 编辑 :正如@Tim Herold所指出的,在性能方面,您可能会更好,避免尝试解析您知道的非数字内容。在这种情况下,我仍然会先进行拆分,然后再放入代码中,以防止您尝试在每行的第一个拆分String上解析parseDouble(),而不是尝试在拆分之前进行String替换;这样会更快(并且如果我们不关心性能,那么try / catch非常好并且可读性更好)。 原文 :当您尝试分析双打时,如果有任何无效输入,则需要try / catch。奖励:您现在不需要删除非数字文本,只需让此try / catch处理即可。
  • 您的琴弦各有 两个 双打。您将不能只在开头删除文本,然后解析其余文本,因为这将不是有效的double。
  • ArrayList通常更易于使用;我会选择返回ArrayList<Double>(或ArrayList<ArrayList<Double>>)以上Double[]Double[][]每周的任何一天。当然,在某些情况下,我会做一些不同的事情,但是您的情况在我看来并不像其中之一。


 类似资料:
  • 问题内容: 我正在开发一些应用程序,它允许从SD卡中选择图像,将其保存到数据库中并为ImageView设置此值。我需要知道将uri转换为字符串并将字符串转换为uri的方法。现在,我使用了Uri的getEncodedPath()方法,但是例如,此代码不起作用: 因此,我不知道如何将Uri保存到数据库中并根据保存的值创建新的Uri。请帮我修复它。 问题答案: 我需要知道将uri转换为字符串并将字符串转

  • 问题内容: 如何从float转换为string或从string转换为float? 在我的情况下,我需要在2个值字符串(我从表中获得的值)和我计算出的浮点值之间进行断言。 我尝试从浮动到字符串: 但是断言失败 问题答案: 使用Java的类。 为了进行比较,将字符串转换为float并比较两个float总是更好。这是因为对于一个浮点数,存在多个字符串表示形式,与字符串相比,它们是不同的(例如“ 25”!

  • 问题内容: 我只想编写这样的代码: 我以为可以代表任何类型,所以也可以代表任何类型,现在我知道我错了,是一个整体类型,不能视为。 因此,有人可以帮助我如何使此代码正常工作,或其他解决方案吗? PS :我知道或可以相互转换,但是实际上这并不是我的意图,可能还有另一种类型,而不是and 。 问题答案: 现在我知道我错了,是一个整体类型,不能视为。 是的,那是因为它是它自己的类型(而不是其他任何类型的“

  • 问题内容: 我将日期以这种格式存储在SQLite数据库中: 当我以这种格式检索日期时,除小时外,其他一切都很好。时间总是如此。这是我的输出: 这是代码: 我究竟做错了什么? 问题答案: 我认为您的日期格式没有意义。没有13:00 PM。删除格式末尾的“ aaa”,或将HH转换为hh。 不过,这对我来说很好: 它将打印“ 2010年4月29日星期四CEST”。

  • 问题内容: 我想将对象转换为 Java。 格式为 问题答案: 转换日期为字符串使用方法:

  • 将转换为的最佳方法是什么?我有下面的代码,我们有更干净的方式吗?