2014-11-14 40 views
0

目前我使用此:如何优化许多变量的声明? 【JAVA]

  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]); 
      } 
+0

动态有什么不对的,你有什么?你不喜欢它,因为它占用了几行代码? – munyul

+0

“但它不会工作”是什么意思?你有什么问题?你没有达到的期望是什么? – Seelenvirtuose

+0

如果将行更改为'double [] d_Werte = new double [s_Werte.length];'它应该至少与您的原始代码 –

回答

-1

如果你想使用数组,那么你不能用变量初始化所以这是行不通的:

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]); 
-3

这里是一个疯狂溶液,我不会真正使用这一点,但它表明(有一种变通方法),你想不工作是什么:

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); 
    } 
} 

编辑:请忽略向下票,这是否在关于原问题的工作:“如何优化声明的变数

+0

这篇文章中没有任何内容表明他需要使用相同的确切变量,他只需要一个简洁的方式来完成这个任务,而不用写太多的代码。 – elmorabea

+0

@MahmoudElmorabea,再次阅读这个问题,并仔细看看他的代码......它的工作原理,他为什么要声称它不会使用原始局部变量是for循环? – munyul

-1

你可以有2个ArrayList,一个包含你的字符串,另一个可以用它们的double值填充。

所以你可以通过循环来完成这项工作,而不是编写一百万行代码。

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

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

这样,它在人口和面积

+0

这并不能解决原来的问题。在“parseDouble”之后应该使用最初定义的局部变量。这看起来不可能用'Double',这就是为什么我建议创建一个包装类,它可以工作。 – munyul

+0

“最初定义的局部变量”,你的意思是完全相同的变量?你所建议的是有一个对原始类型的引用列表,而java不会这样做//使用最初定义的变量或另一个具有相同值的变量会有什么不同,因为它们是原语? – elmorabea

+0

我没有问原来的问题。但是,如果您阅读原始问题,则用户希望将代码简化为循环以初始化局部变量,而不是替换它们。看起来这是一个关于如何编写代码的问题_look_ _pretty_,这对于每个程序员来说总是个人品味的问题。 – munyul