0

次の入力を持つJavaプログラムに取り組んでいます:

A V V V VV V V V
E F V E VF E V E
C D V C VD B V C
A A V A VA G V A
V D V V VD E V V
A V V A VV V V A

および次の出力:

R
R

R
 R
R

R

したがって、R列に最小限の 1 文字しか含まれていない場合はan を出力する必要がありますが、列に 'sA-Gしかない場合はスペースを出力する必要があります。V私が持っているコードは次のとおりです。

Scanner inputc2 = new Scanner (new File("internalc"));
int sss = 0;

for (int i = 0; i < n; i++) {
 for (int j = 0; j < m; j++) {
  try{
     matrix2[i][j] = inputc2.useDelimiter(" ").next().replaceAll(",", " ");
       System.out.println(matrix2[i][j]);
       temp2[sss] = matrix2[i][j];//change this

        if(temp2[sss].indexOf("N") >= 0){
         pc2.println(temp2[sss].replaceAll("N","R"));
        }
        if(temp2[sss].indexOf(' ') >= 0){
         pc2.println(temp2[sss]);
        } 
        sss++;

     }
     catch (java.util.NoSuchElementException e) {
         // e.printStackTrace();
     }
   }

}

現在のプログラムでは、temp2[sss] は matrix2[i][j] とまったく同じですが、列の文字列でなければなりません。あなたが私を助けてくれることを願っています。

敬具、ビョルン

4

2 に答える 2

1

Heres は、私が達成するために書いたサンプル プログラムです。出力は期待どおりではない可能性があります。必要に応じて正規表現を適切に調整してください。

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

    Pattern pattern = Pattern.compile("[A-G]+[A-G]{0,1}");
    Pattern pattern2 = Pattern.compile("[V]+[V]*");

    BufferedReader br = new BufferedReader(new FileReader(new File("test.txt")));
    String line;
    while ((line = br.readLine()) != null) {
        StringBuffer sf = new StringBuffer();

        //System.out.println(line);         
        String[] tempArr = line.split(" ");
        //System.out.println(tempArr.length);

        for(String s : tempArr){
            Matcher matcher = pattern.matcher(s);
            Matcher matcher2 = pattern2.matcher(s);
            if (matcher.find()) {
                sf.append("R");
            }else if(matcher2.find())   {
                sf.append(" ");
            }
        }
        System.out.println(sf);
    }
    br.close();
}

編集 2

どうぞ

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

    Pattern pattern = Pattern.compile("[A-G]+");
    Pattern pattern2 = Pattern.compile("[V]+");

    List<String[]> mat = new ArrayList<String[]>();
    String[] row1 = { "A", "V", "V", "V", "VV", "V", "V", "V" };
    String[] row2 = { "E", "F", "V", "E", "VF", "E", "V", "E", };
    String[] row3 = { "C", "D", "V", "C", "VD", "B", "V", "C" };
    String[] row4 = { "A", "A", "V", "A", "VA", "G", "V", "A" };
    String[] row5 = { "V", "D", "V", "V", "VD", "E", "V", "V" };
    String[] row6 = { "A", "V", "V", "A", "VV", "V", "V", "A" };

    mat.add(row1);
    mat.add(row2);
    mat.add(row3);
    mat.add(row4);
    mat.add(row5);
    mat.add(row6);

    int rowSize = 6;
    int colSize = 8;

    String[][] matrix = mat.toArray(new String[rowSize][colSize]);

    for (int i = 0; i < colSize; i++) {

        StringBuffer sf = new StringBuffer();
        for (int j = 0; j < rowSize; j++) {
            sf.append(matrix[j][i]);

        }

        Matcher matcher = pattern.matcher(sf.toString());
        Matcher matcher2 = pattern2.matcher(sf.toString());

        if (matcher.find()) {
            System.out.println("R");
        } else if (matcher2.matches()) {
            System.out.println(" ");
        }

    }

}

結果:

R
R

R
R
R

R
于 2013-03-06T13:54:38.683 に答える
1

この行を置き換えることができます

temp2[sss] = matrix2[i][j];

List<Integer> temp2 = new ArrayList<Integer>();
temp2.add(matrix2[i][j]);
int[] vector = new int[temp2.size()];
for (int i = 0; i < vector.length; i++) {
    vector[i] = temp2.get(i);
}
于 2013-03-06T13:25:36.540 に答える