稍后在程序中设置数组的值

时间:2016-12-30 03:33:39

标签: java

我是JAVA的初学者,刚刚开始学习这门语言。我在How to initialize an array in Java?线程进行了研究,但无法找到解决方案。

我的目标是在声明所有变量时初始化数组,然后在程序中稍后设置值(原因是我想保持代码清洁,即我不想初始化并在同一时间设置值。)具体来说,我不是要同时声明和设置值,而是在不同的时间。

这里是我的代码,其中包含从上述SO线程中学到的不同选项:

import csv
from itertools import chain

csv_input_filenames = [
    'csvfile1.csv',
    'csvfile2.csv',
    'csvfile3.csv',
]
csv_output_filename = 'csv_out.csv'

# get the csv data
csv_files = [open(file_name) for file_name in csv_input_filenames]
csv_handles = [csv.reader(csv_file) for csv_file in csv_files]
rows = (list(chain(*row)) for row in zip(*csv_handles))

# write combined output
with open(csv_output_filename, 'wb') as csv_file:
    filenames_header = list(chain(
        *zip(csv_input_filenames, [''] * len(csv_input_filenames))))

    csv_writer = csv.writer(csv_file)
    csv_writer.writerow(filenames_header)

    for row in rows:
        csv_writer.writerow(row)

# close input files
for csv_file in csv_files:
    csv_file.close()

正如我们上面所见,我可以(在选项1中)使用public class AutoArray { public static void main(String[] args) { //Option 1 int[] Array1 = new int[4]; //Declare Array1[0] = 3; //Set individual elements. Fine but repetitive. Array1[1] = 4; Array1[2] = 5; Array1[3] = 6; System.out.println("Array1 is:"+Array1); //Option 2 int Array3[] = {3,4,5,6}; //Declare and set at the same time. Not good. System.out.println("Array3 is:"+Array3); //Option 3 int Array5[] = new int[3]; Array5[] = {3,5,11}; //Won't compile } } 设置数组的各个元素,其中Array[i] = XYZ或(在选项2中)设置声明时的值阵列。

但是,我想做一些我在选项3中尝试过的事情 - 即。稍后使用花括号设置值。我不想重复设置单个元素的代码,因为它看起来很笨或不能使用i<4循环,因为值不会遵循模式。

我能做些什么吗?我很感激任何想法。

2 个答案:

答案 0 :(得分:3)

数组具有固定的大小,因此您稍后执行此操作时将创建一个新数组(即,您的初始值可以是null)。接下来,你在这里看合成糖

int Array3[] = { 3, 4, 5, 6 };

等同于(并且只有在声明时允许更短的形式)

int Array3[] = new int[] { 3, 4, 5, 6 };

所以,你可以

int Array5[] = null;
Array5 = new int[] { 3, 5, 11 };

答案 1 :(得分:-2)

//Option 3
int Array5[] = new int[3];//Array5 to be an object.
Array5[] = {3,5,11}; //after this ,Array5 become another object.
//'{3,5,11}' means 'new int[]{3,5,11}'