我目前正在努力完成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!");
}
}
}
我遇到的问题是保持所有这一切,我已经把它打印到输出文件的每一行,分成不同的子串。我似乎无法将它放到一个可以将所有子串放入单个数组中的点,并将其用作堆栈。我一直在搞错,并且有不匹配等等。非常感谢任何帮助,谢谢!
答案 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!");
}
}
}