1

文字列から2次元int配列への変換に問題があります。
私が持っているとしましょう:

String x = "1,2,3;4,5,6;7,8,9"

(私のプログラムでは、テキスト領域からの文字列になります。)そして配列を作成したいn x n

int[3][3] y = {{1,2,3},{4,5,6},{7,8,9}} 

(次の段階で必要です。)文字列を分割して1次元配列を作成しようとしていますが、次に何をすべきかわかりません。


あなたが提案するように、私は最初;にそれを使用して分割を試みます,が、私の解決策は素晴らしいものではありません。テーブルがある場合にのみ機能し3 x 3ます。文字列配列を作成するループを作成するにはどうすればよいですか?

public int[][] RunMSTFromTextFile(JTextArea ta)
    {
        String p = ta.getText();
        String[] tp = p.split(";");

        String tpA[] = tp[0].split(",");
        String tpB[] = tp[1].split(",");
        String tpC[] = tp[2].split(",");

        String tpD[][] = {tpA, tpB, tpC};

        int matrix[][] = new int[tpD.length][tpD.length];

        for(int i=0;i<tpD.length;i++)
        {
            for(int j=0;j<tpD.length;j++)
            {
                matrix[i][j] = Integer.parseInt(tpD[i][j]);
            }
        }
        return matrix;
    }
4

5 に答える 5

3
  1. 行を取得するために分割し;ます。
  2. それらをループし、カウンターをインクリメントします(例x
    1. ,各行の値を取得するために分割します。
    2. それらの値をループし、カウンターをインクリメントします(例y
      • Parse each value (e.g. using one of the parseInt methods of Integer) and add it to the x,y of the array.
于 2013-01-24T23:00:17.817 に答える
2

をすでに作成していて、int[9]それをに分割したい場合int[3][3]

for (int i = 0; i < 3; i++) {
  for (int j = 0; j < 3; j++) {
    toArray[i][j] = fromArray[(3*i) + j);
  }
}

ここで、2次元配列が長方形でない場合、つまり、内側の配列のサイズがすべての外側の配列で同じでない場合は、さらに作業が必要になります。を使用してとScannerを切り替えるのが最善です。最大の課題は、行を終了するセミコロンに到達するまで、各行の要素(列)の数がわからないことです。nextStringnext

于 2013-01-24T22:50:50.193 に答える
2

Integer.parseInt()分割を使用した後、数値を取得するために見てみましょう。

String lines[] = input.split(";");
int width = lines.length;
String cells[] = lines[0].split(",");
int height = cells.length;
int output[][] = new int[width][height];

for (int i=0; i<width; i++) {
    String cells[] = lines[i].split(",");
    for(int j=0; j<height; j++) {
        output[i][j] = Integer.parseInt(cells[j]);
    }
}

次に、何をするかを決める必要がありますNumberFormatExceptions

于 2013-01-24T23:00:10.360 に答える
0

A solution using 2 splits:

String input = "1,2,3;4,5,6;7,8,9";

String[] x = input.split(";");

String[][] result = new String[x.length][];
for (int i = 0; i<x.length; i++) {
    result[i] = x[i].split(",");
}

This give a 2 dimension array of strings you will need to parse those ints afterwards, it depends on the use you want for those numbers. The following solution shows how to parse them as you build the result:

String input = "1,2,3;4,5,6;7,8,9";

String[] x = input.split(";");

int[][] result = new int[x.length][];

for (int i = 0; i < x.length; i++) {
    String[] row = x[i].split(",");
    result[i] = new int[row.length];

    for(int j=0; j < row.length; j++) {
        result[i][j] = Integer.parseInt(row[j]);
    }
}
于 2013-01-24T23:02:41.353 に答える
0

Super simple method!!!

package ADVANCED;
import java.util.Arrays;
import java.util.Scanner;

public class p9 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc=new Scanner(System.in);

        String x=sc.nextLine();
        String[] array = x.split(",");
        int length_x=array.length;
        int[][] two=new int[length_x/2][2];

        for (int i = 0; i <= length_x-1; i=i+2) {
            two[i/2][0] = Integer.parseInt(array[i]);
        }

        for (int i = 1; i <= length_x-1; i=i+2) {
            two[i/2][1] = Integer.parseInt(array[i]);
        }   
    }
}
于 2017-10-23T05:30:00.073 に答える