【问题标题】:Splitting The Strings Of An Array Into Substrings And Inserting Them Into A New Array?将数组的字符串拆分为子字符串并将它们插入新数组?
【发布时间】:2016-11-21 19:21:38
【问题描述】:

我目前正在努力完成一个 Java 项目(已经有一段时间了),我希望大家能够提供帮助。我目前正在为我的项目开发堆栈操纵器/标记器,并且我遇到了一些关于数组的问题,更具体地说,字符串数组。下面是我编写的代码,它不包括我如何从文本文件中导入所有信息的所有好东西,但我向你保证它可以工作,并为我提供了一个数组,每个元素都是不同的行:

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!");
        }
    }
}

我遇到的问题是让所有这些保持直截了当,我已经达到了这样的程度,它将打印出输入文件的每一行,分成不同的子字符串。我似乎无法将所有子字符串放入一个数组中,并将其用作堆栈。我一直在搞砸它并出现不匹配之类的问题。任何帮助将不胜感激,谢谢!

【问题讨论】:

  • input.txt的内容是什么?期望输出和当前输出是多少?
  • 你想要堆栈中的一个元素是所有单词的数组吗?还是您希望每个单词都成为堆栈中的一个元素?
  • 输入文件会有 push 10、push 20 或 Add 等行。所以我需要确定是否有类似 push 或 add 的命令,和/或保存整数值,我将其保存为字符串并稍后转换为整数或浮点数。我希望每个单词/字符分组都是堆栈数组中自己的元素。我认为这会给我最大的灵活性。

标签: java arrays string list stack


【解决方案1】:

代码的第二部分有一个小错误。您正在计算 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
 }

【讨论】:

  • 完成了,谢谢你,我当时似乎只是懒惰了。
【解决方案2】:

我想出了一个更好的方法来解决这一切,采取了一种新的方法,并想出了如何让堆栈以与它们外观相反的顺序被喂入语句的方式结束(有点作弊,但不管怎样都行)。我计划建立一个临时数组来执行需要执行的实际计算和操作,然后将其反馈回来,但这应该可行:

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!");
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 2012-02-22
    • 2020-09-06
    • 1970-01-01
    相关资源
    最近更新 更多