将整数数组存储到列表整数数组中并按顺序访问这些变量

时间:2013-03-07 23:08:45

标签: java arrays printing

好吧所以我有这个代码,我想存储一个整数数组intwholef [x]的值,并将这些值存储在数组wholelist [y]中。唯一的问题是我设置它的方式是我取数组的前三个值并将它们存储在intwholef [x]中然后x在它传递到下一行时重置。图形表示在下面

这是存储在字符串数组

中的文件的内容
intwholef[0] = 1 3 10
intwholef[1] = 2 4 15
intwholef[2] = 3 6 8
intwholef[3] = 4 7 3
intwholef[4] = 5 9 12

现在我想要的是那些要存储的值。

wholelist[] = 1,3,10,2,4,15,3,6,8,4,7,3,5,9,12

可以像

一样访问
wholelist[2] * wholelist[5] = 150;

我遇到的问题是我无法将值保存在这样的列表中,有什么想法吗?

这里是整个代码,我正在谈论的部分是在底部

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

public class project1
{
    @SuppressWarnings("null")
    public static void main(String[] args)
    {
        System.out.println("These are your following choices: ");
        System.out.println("1. First-Come First-Served (FCFS): ");
        System.out.println("2. Shortest Job Next (SJN): ");
        System.out.println("3. Shortest Remaining Time (SRT): ");
        System.out.println("4. Round Robin (RR) with time quantum = 4 ms: ");
        System.out.println("please enter your choice by entering 1, 2, 3, 4");
        Scanner in = new Scanner(System.in);
        int choice = in.nextInt();
        if(choice ==1)
        {
            System.out.println("your choice was first come first serve");
        }
        else if(choice == 2)
        {
            System.out.println("your choice was shortest job next");
        }
        else if(choice == 3)
        {
            System.out.println("your choice was shortest job remaining");
        }
        else if(choice == 4)
        {
            System.out.println("your choice was round robin (rr) with time quantum = 4 ms");
        }
        else
        {
            System.out.println("you entered an invalid choice");
        }
        BufferedReader file = null;

        System.out.println("Please enter the file path for your input");
        Scanner fp = new Scanner(System.in);
        String input = fp.nextLine();
        String fileloc;
        String[] wholef = null;
        int fline = 0;
        try 
        {
            file = new BufferedReader(new FileReader(input));
            fileloc = file.readLine();
            fline = Integer.parseInt(fileloc);  // this stands for file contents from the file to be read
            wholef = new String[fline];
            int i = 0;
            while((fileloc = file.readLine()) != null)
            {
                wholef[i] = fileloc;
                System.out.print("the contents of this file are: ");
                System.out.println(fileloc);
                i++;
            }
        System.out.println("This is the contents of the file stored in an array of strings");
        for(int n = 0; n < fline; n++)
        {
            System.out.println(wholef[n]);
        }
        } catch (IOException er)
        {
            er.printStackTrace();
        }
        finally
        {
        try
        {
            if(file != null)
            {
                file.close();
            }
        } catch(IOException erx)
        {
            erx.printStackTrace();
        }
        }

        System.out.println("This is the size of the contents of the file");
        for(int n = 0; n < fline; n++)
        {
            System.out.println(wholef[n].length());
        }

        System.out.println("this is the input file converted and stored into an array of integers");

        String[] parts = null;
        int[] intwholef = null;
        int[] wholelist =null;
        for(int x = 0; x < fline; x++)
        {
            parts = wholef[x].split(" ");

            intwholef= new int[parts.length];

            for(int n = 0; n < parts.length; n++)
            {
                intwholef[n] = Integer.parseInt(parts[n]);
                System.out.println(/*"intwholef[" + n + "] = " + */intwholef[n]);
                for(int m = 0; m < parts.length; m++)
                {
                    //wholelist[m]= intwholef[n];
                }
            }
        }

        System.out.println("this is the list of number from the conversion dumped into a singular array list");

        for(int i = 0; i < 15; i++)
        {
            System.out.println("intwholef[" + i + "] = " + wholelist[i]);
        }
        /*
        System.out.println("operations done with array of ints");
        for(int i = 0; i < 20; i++)
        {
            System.out.println(intwholef[i]);
        }
        //System.out.println(intwholef[0] * intwholef[3]);
        */

    }
}

2 个答案:

答案 0 :(得分:2)

我建议你使用List(比如ArrayList)而不是数组,因为它的大小可以改变。就这样:

ArrayList wholeList = new ArrayList<Integer>();
for(int x = 0; x < fline; x++)
    {
        parts = wholef[x].split(" ");
        for(int n = 0; n < parts.length; n++)
        {
            wholeList.add(Integer.parseInt(parts[n]));
        }
    }

然后,您可以使用wholeList.get(index)访问不同的值。

答案 1 :(得分:0)

您只需使用ArrayList即可。如果您想以数组结尾,请使用toString方法。使用\\s拆分字符串,以便任何空格都可以用作分隔符。此外,您只需要循环,如下所示:

    int[] myArray = new int[10];
    List<Integer> list = new ArrayList<Integer>();
    while ((fileloc = file.readLine()) != null) {
        for (String s : fileloc.split("\\s+")) {
            list.add(Integer.parseInt(s));
        }
        System.out.println(Arrays.toString(myArray));
    }
    int[] wholelist = list.toArray();