Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何优化多变量的声明?[爪哇]_Java_Android_Arrays_Optimization - Fatal编程技术网

Java 如何优化多变量的声明?[爪哇]

Java 如何优化多变量的声明?[爪哇],java,android,arrays,optimization,Java,Android,Arrays,Optimization,目前我正在使用这个: d_y1 = Double.parseDouble(s_y1); d_y2 = Double.parseDouble(s_y2); d_y3 = Double.parseDouble(s_y3); d_y4 = Double.parseDouble(s_y4); d_y5 = Double.parseDouble(s_y5); d_

目前我正在使用这个:

            d_y1 = Double.parseDouble(s_y1);
            d_y2 = Double.parseDouble(s_y2);
            d_y3 = Double.parseDouble(s_y3);
            d_y4 = Double.parseDouble(s_y4);
            d_y5 = Double.parseDouble(s_y5);
            d_y6 = Double.parseDouble(s_y6);
            d_x1 = Double.parseDouble(s_x1);
            d_x2 = Double.parseDouble(s_x2);
            d_x3 = Double.parseDouble(s_x3);
            d_x4 = Double.parseDouble(s_x4);
            d_x5 = Double.parseDouble(s_x5);
            d_x6 = Double.parseDouble(s_x6);
我想了一些类似的事情,但它不起作用: 有什么建议吗

String[] s_Werte = {s_x1, s_x2, s_x3, s_x4, s_x5, s_x6,s_y1, s_y2, s_y3, s_y4, s_y5, s_y6};
double[] d_Werte = {d_x1, d_x2, d_x3, d_x4, d_x5, d_x6,d_y1, d_y2, d_y3, d_y4, d_y5, d_y6};

for (i = 0; i < d_Werte.length; i++){
                d_Werte[i] = Double.parseDouble(s_Werte[i]);
            }

如果要使用数组,则无法使用变量对其进行初始化,因此这将不起作用:

double[] d_Werte = {d_x1, d_x2, d_x3, d_x4, d_x5, d_x6,d_y1, d_y2, d_y3, d_y4, d_y5, d_y6};
但您还需要以可以循环的格式获取字符串变量,如:

String[] strings;
首先需要初始化其大小并分配必要的空间:

double[] d_Werte = new double[12];
或者使用2个长度为6的数组,然后将每个值指定给特定索引:

for(int i = 0; i < 12; i++)
 d_Werte[i] = Double.parseDouble(strings[i]);
这是一个疯狂的解决方案,我不会真的使用它,但它表明,通过一个解决方案,您试图做的工作:

import java.util.Arrays;
import java.util.List;

public class ValueArrays
{
    public static class MyDouble
    {
        public Double value = 0d;
    }

    public static void main( String[] args )
    {

        MyDouble d1 = new MyDouble();
        MyDouble d2 = new MyDouble();
        MyDouble d3 = new MyDouble();
        MyDouble dn = new MyDouble();
        String s1 = "3";
        String s2 = "2";
        String s3 = "1";

        // s_Values and d_Values MUST be of the same length, 
        // whether you use variable or static String's here doesn't matter
        String[] s_Values = { s1, s2, s3, "9.9" };
        List<MyDouble> d_Values = Arrays.asList(d1, d2, d3, dn);

        for ( int i = 0; i < d_Values.size(); i++ )
        { // This will now initialise all the "local" variables
            d_Values.get(i).value = Double.valueOf(s_Values[i]);
        }

        // As you'll see from the output, all local values have now been correctly "initialised".
        System.out.println("d1 = " + d1.value);
        System.out.println("d2 = " + d2.value);
        System.out.println("d3 = " + d3.value);
        System.out.println("dn = " + dn.value);
    }
}

编辑:请忽略否决票,这确实适用于原始问题:如何优化多变量声明

您可以有两个ArrayList,一个包含字符串,另一个可以由其双值填充

因此,您可以通过循环来完成工作,而不是编写一百万行代码

List<String> strings ...
List<Double> doubles ...

for (String s : strings) {
    doubles.add(Double.parseDouble(s));
}

这样一来,人口和规模都是动态变化的

你所拥有的有什么不对?你不喜欢它,因为它占用了好几行代码吗?但它不起作用意味着什么?你有什么问题?你的期望有什么没有实现?如果你把行改成double[]d_Werte=新的double[s_Werte.length];它至少应该与您的原始代码相同。双数组中的值不会与字符串数组中的字符串值一起声明。它不起作用,因为d_Werte中的值是d_x1,d_x2。。。不是原件。所以分配到d_Werte不会改变d_x1,d_x2。。。。您应该在整个代码中使用数组,并且完全不用单独的变量。这并不能解决最初的问题。解析后,应使用最初定义的局部变量。对于Double,这似乎是不可能的,这就是为什么我建议创建一个包装类,它可以工作。最初定义的局部变量,您是指完全相同的变量吗?您的建议是提供一个对基元类型的引用列表,java没有这样做//使用最初定义的变量或具有相同值的另一个变量会有什么区别,因为它们是基元类型?我没有问最初的问题。但是,如果您阅读原始问题,用户希望将代码简化为一个循环来初始化局部变量,而不是替换它们。这似乎是一个关于如何使代码看起来美观的问题,这对于每个程序员来说都是个人品味的问题。这是问题的标题:如何优化多变量的声明?帖子中没有任何内容表明他需要使用相同的精确变量,他只是需要一种更整洁的方式来做到这一点,而不需要写太多的行。@MahmoudElmorabea,再读一遍这个问题,好好看看他的代码。。。这是可行的,如果他没有尝试使用原始的局部变量作为for循环,为什么他会声称它不可行呢?