【问题标题】:How to split a string sequence and convert each element to a double如何拆分字符串序列并将每个元素转换为双精度
【发布时间】:2015-04-11 05:56:50
【问题描述】:

我的编程课遇到了一个问题。我们需要用逗号分隔参数 String 以产生一个字符串数组,然后它需要解析每个单独的 String 以获得一个双精度数,并按顺序存储这些双精度数。我们还得到了一些测试代码,输入参数如 ("1,5")。

这是我当前的代码

public class Sequence
{

private double[] sequence;

public Sequence(String s)
{ 
  String[] res = s.split(",");

  int length = res.length;

  double[] result = new double[length];

  for ( int i =0; i<length; i++) {

  result[i] = Double.parseDouble(res[i])

  }

 }

我不确定从这里去哪里,因为当我测试我的代码时,它并没有给出预期的结果。按顺序存储是什么意思?

【问题讨论】:

  • 您将解析结果存储在局部变量中...
  • 我想我让它工作了,而不是创建数组结果,我把 sequence = new double [length];并将 for 循环中的 result[i] 更改为 sequence[i]

标签: java arrays string for-loop double


【解决方案1】:

我已经更新了我的答案,这可能就是你要找的:

import java.util.Arrays;

public class Four {

    public static void main(String[] args) {

        String string = "1,2,10,4,9";

        System.out.println(string);

        double[] ds = getDouble(string);

        for (int i = 0; i < ds.length; i++) {
            System.out.println(ds[i]);
        }

    }

    private static double[] getDouble(String string) {
        double[] _double;
        String[] _Strings = string.split(",");

        _double = new double[_Strings.length];

        for (int i = 0; i < _Strings.length; i++) {
            _double[i] = Double.parseDouble(_Strings[i]);
        }
        Arrays.sort(_double);
        return _double;
    }

}

输出

【讨论】:

  • 如果您对代码进行评论或尝试解释一下它的作用,这将对未来的读者有所帮助。变量命名没有帮助。 :p
  • @Unihedro,感谢您的编辑,我会记住这一点,我知道变量命名在其他人阅读时可能会很烦人,谢谢 :)
【解决方案2】:

我会这样做:

public class Sequence {

    private double[] sequence;

    public void createSequence(int sequenceLength) {
        sequence = new double[sequenceLength];
    }

    public void addToSequence(int index, double value) {
        sequence[index] = value;
    }

    public double parseDouble(String s) {
        return Double.parseDouble(s);
    }

    public String[] splitString(String s) {
        return s.split(",");
    }

    @Override
    public String toString() {
        return Arrays.toString(sequence);
    }

    public static void main(String[] args) {
        String str = "10.10,20.20,30.30";

        Sequence sequence = new Sequence();
        String[] splitted = sequence.splitString(str);
        sequence.createSequence(splitted.length);

        for (int i = 0; i < splitted.length; i++) {
            double doubleValue = sequence.parseDouble(splitted[i]);
            sequence.addToSequence(i, doubleValue);
        }

        System.out.println(sequence);
    }
}

【讨论】:

    【解决方案3】:

    private double[] sequence; 更改为private Double[] sequence; 并使用下面的代码

    public class Sequence {
    
        private Double[] sequence;
    
        public Sequence(String s) {
            String separated[] = s.replace(" ", "").split(",");
            ArrayList<Double> list = new ArrayList<>();
            for (String num : separated) {
                list.add(Double.parseDouble(num));
            }
            this.sequence = list.toArray(new Double[separated.length]);
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-16
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 2014-06-11
      相关资源
      最近更新 更多