0

好的,所以我有这段代码,我想存储整数数组 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]);
        */

    }
}
4

2 回答 2

2

我建议您使用列表(如 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)

于 2013-03-07T23:18:48.597 回答
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();
于 2013-03-07T23:21:57.720 回答