2016-07-19 17 views
0

私は現在、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!"); 
     } 
    } 
} 

この問題を解決するには、入力ファイルの各行を別々の部分文字列に分割して印刷することになりました。私は、すべての部分文字列を1つの配列に入れることができず、スタックとして使用することができないようです。私はそれをやめて、ミスマッチなどを持っています。どんな助けでも大変感謝しています。ありがとう!

+0

input.txt' 'の内容は何ですか?所望の出力と電流出力は何ですか? – piyushj

+0

スタック上のすべての単語の配列である1つの要素を欲しいですか?または、各単語をスタック内の要素にしたいですか? – BevynQ

+0

入力ファイルには、プッシュ10、プッシュ20、または追加などの行があります。だから私は、押したり追加したり、文字列として保存して整数や浮動小数点に変換する整数値を保存するかどうかを特定する必要があります。私は各単語/文字グループをスタック配列内のそれ自身の要素にしたい。私はそれが私に道の下で最も柔軟性を与えることができると思います。 – Kishvier

答えて

0

、新たなアプローチを取り、その外観とは逆の順序で文を供給されているスタックで終わるために、これを取得する方法を考え出しました(ちょっと浮気しているけど、どんな作品でも)。私が行った後、それをフィードバックする必要があり、実際の計算やアクションを実行するために一時的な配列を確立することを計画したが、これは動作するはずです:

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

コードの2番目の部分に小さな間違いがあります。 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 
} 
+0

私はちょうどその時点で怠け者になったようです。 – Kishvier

関連する問題