将数组的字符串拆分为子字符串并将其插入新数组中?

时间:2016-07-19 03:55:51

标签: java arrays string list stack

我目前正在努力完成Java项目(已经有一段时间了),我希望你们都能提供帮助。我正在为我的项目开发一个堆栈操纵器/标记器,我遇到了一些Arrays的问题,String Arrays更具体。下面是我编写的代码,它没有包含我从文本文件中导入所有信息的所有好处,但我向你保证它有效,并为我提供了一个数组,每个元素都是不同的行:< / p>

package textfiles;

import java.io.IOException;
import java.util.ArrayDeque;
import java.util.Arrays;

public class modifierz {

    public static void main(String[] args) throws IOException {


        ArrayDeque<String[]> stack = new ArrayDeque<>();
        String file_name = "./input.txt";
        String temp = "";

        try {
            ReadFile file = new ReadFile(file_name);
            String[] aryLines = file.OpenFile();

            for(int i = 0; i < aryLines.length; i++)
                stack.push((aryLines[i].split(" ")));

             final int size = stack.size();

             for (int j = 0; j < size; j++) {
             temp = Arrays.toString(stack.pop());
             temp = temp.replaceAll("\\[", "").replaceAll("\\]", ""); //Clean up output.
             System.out.println(temp);//Test
             }

        }   catch(IOException e) {
            System.out.println("Error!");
        }
    }
}

我遇到的问题是保持所有这一切,我已经把它打印到输出文件的每一行,分成不同的子串。我似乎无法将它放到一个可以将所有子串放入单个数组中的点,并将其用作堆栈。我一直在搞错,并且有不匹配等等。非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:0)

代码的第二部分有一个小错误。您正在计算for循环内部的堆栈大小,该循环在每次执行循环时执行,并且每次由于pop()函数输出减小的大小。请将其更改为:

 final int size = stack.size();
 for (int j = 0; j < size; j++) {
    temp = Arrays.toString(stack.pop());
    temp = temp.replaceAll("\\[", "").replaceAll("\\]", ""); //Clean up output.
    System.out.println(temp);//Test
 }

答案 1 :(得分:0)

我想出了一个更好的方法来解决这个问题,采取了一种新方法,并想出如何最终得到堆栈以与它们出现相反的顺序提供语句(sorta作弊,但无论如何工作)。我计划建立一个临时数组来执行需要执行的实际计算和操作,然后将其反馈,但这应该有效:

package textfiles;

import java.io.IOException;
import java.util.ArrayDeque;
import java.util.Arrays;

public class CommandCenter {

static void reverseArray(String arr[], int start, int end)    {
    String temp;
    if (start >= end)
        return;
    temp = arr[start];
    arr[start] = arr[end];
    arr[end] = temp;
    reverseArray(arr, start+1, end-1);
}

public static void main(String[] args) throws IOException {

    String file_name = "./input.txt";

    try {
        ReadFile file = new ReadFile(file_name);
        String[] aryLines = file.OpenFile();
        reverseArray(aryLines, 0, aryLines.length - 1);
        ArrayDeque<String> stack = new ArrayDeque<String>(Arrays.asList(aryLines));
        System.out.println(stack);                                                      //TEST  

    }   catch(IOException e) {
        System.out.println("Error!");
    }
  }
}