【问题标题】:Java array assignment (multiple values)Java 数组赋值(多个值)
【发布时间】:2011-02-04 06:50:02
【问题描述】:

我已经定义了一个 Java 数组,例如

float[] values = new float[3];

我想在代码中进一步做这样的事情:

values = {0.1f, 0.2f, 0.3f};

但这给了我一个编译错误。有没有更好的方法来一次定义多个值,而不是这样做?:

values[0] = 0.1f;
values[1] = 0.2f;
values[2] = 0.3f;

谢谢!

【问题讨论】:

    标签: java variable-assignment


    【解决方案1】:
    values = new float[] { 0.1f, 0.2f, 0.3f };
    

    【讨论】:

      【解决方案2】:

      是的:

      float[] values = {0.1f, 0.2f, 0.3f};
      

      此语法仅在初始化器中允许使用。你不能在作业中使用它,以下是你能做的最好的:

      values = new float[3];
      

      或

      values = new float[] {0.1f, 0.2f, 0.3f};
      

      试图在语言规范中为此找到参考,但它和以往一样难以阅读。还有人找到吗?

      【讨论】:

      • 我想这可能是它,10.6 Array Initializers,java.sun.com/docs/books/jls/third_edition/html/…
      • 这似乎是语法的相关部分:java.sun.com/docs/books/jls/third_edition/html/… - 就个人而言,与类似的文档相比,我一直发现 java 语言规范非常易读。
      • 您可能需要注意底部代码创建了一个新数组。
      • (如果您想找到一个非常困难的规范,请尝试使用 Algol-68 的规范...及其 2 级语法。搜索“修订后的 Algol-68 报告”。)
      【解决方案3】:

      在声明时,您可以执行以下操作。

      float[] values = {0.1f, 0.2f, 0.3f};
      

      当字段已经定义后,试试这个。

      values = new float[] {0.1f, 0.2f, 0.3f};
      

      请注意,第二个版本也会创建一个新数组。 如果 values 是对已存在字段的唯一引用,则它有资格进行垃圾回收。

      【讨论】:

        【解决方案4】:

        如果你知道编译时的值,你可以这样做:

        float[] values = {0.1f, 0.2f, 0.3f};
        

        如果值是运行时的变量,则无法做到这一点。

        【讨论】:

          【解决方案5】:

          Java 不提供将多个值分配到现有数组元素的构造。初始化器语法只能在创建新数组对象时使用。这可以在声明时或稍后进行。但无论哪种方式,初始化器都在初始化一个新的数组对象,而不是更新现有的。

          【讨论】:

            【解决方案6】:

            这应该可行,但速度较慢且感觉不对:System.arraycopy(new float[]{...}, 0, values, 0, 3);

            【讨论】:

              【解决方案7】:

              您可以使用局部变量,例如:

                  float[] values = new float[3];
                  float[] v = {0.1f, 0.2f, 0.3f};
                  float[] values = v;
              

              【讨论】:

                【解决方案8】:
                    public class arrayFloats {
                      public static void main (String [] args){
                        float [] Values = new float[3];
                        float Incre = 0.1f;
                        int Count = 0;
                
                        for (Count = 0;Count<3 ;Count++ ) {
                          Values [Count] = Incre + 0.0f;
                          Incre += 0.1f;
                          System.out.println("Values [" + Count + "] : " + Values [Count]);
                        }
                
                
                      }
                    }
                
                //OUTPUT:
                //Values [0] : 0.1
                //Values [1] : 0.2
                //Values [2] : 0.3
                

                这并不是将值分配给特定数组的全部内容。因为我看到样本是 0.1 - 0.3,所以你可以这样做。如果您正在设计图表和图形,此方法非常有用。您可以让 x 值增加 0.1,直到第 n 次。

                或者你想设计某种网格。

                【讨论】:

                • 添加描述性文字可能有助于其他人理解您的答案
                【解决方案9】:
                int a[] = { 2, 6, 8, 5, 4, 3 }; 
                int b[] = { 2, 3, 4, 7 };
                

                如果你选择浮点数,那么你就选择浮点数,这是你的选择

                这是显示数组元素的好方法。

                【讨论】:

                  【解决方案10】:

                  例如,我尝试了以上所有失败的字符 但这对我有用>>保留一个指针然后分配值

                  char A[];
                  A = new char[]{'a', 'b', 'a', 'c', 'd', 'd', 'e', 'f', 'q', 'r'};
                  

                  【讨论】:

                    猜你喜欢
                    • 2023-04-05
                    • 2014-12-17
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-07-13
                    • 2021-06-17
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多