最大的行和列Java正则表达式

时间:2014-04-25 18:18:06

标签: java regex

这是一个程序,用于确定任何给定随机数组上的最大行和列。 我不确定最后3行代码是做什么的。

我知道它们是正则表达式的一部分,但似乎无法找到显示这意味着“^ \ d,]”的资源 谁能解释这3行代码中发生了什么?

的System.out.println(Arrays.deepToString(矩阵).replaceAll( “[^ 01 \]]”, “”)的replaceAll( “]”, “\ n”));             System.out.println(“最大行索引:”+ rowIndices.toString()。replaceAll(“[^ \ d,]”,“”));             System.out.println(“最大列索引:”+ colIndices.toString()。replaceAll(“[^ \ d,]”,“”));

public class LargestRowsColumnsTest {
public static void main (String[] args){
Random rand = new Random(System.currentTimeMillis());

    Scanner input = new Scanner(System.in);
    System.out.print("Enter array size n: ");
    int n = input.nextInt();

    int maxRowValue=0;
    int maxColValue=0;
    int [][] matrix = new int[n][n];
       for (int i=0;i<n;i++){
           for(int j=0;j<n;j++){
            matrix[i][j]=  rand.nextInt(100)%2;
           }
       }
    int[]rowsSum = new int[n];
    int[]colsSum = new int[n];

    for (int i=0;i<n;i++){
        for (int j=0;j<n;j++){
         rowsSum[i]=rowsSum[i]+matrix[i][j];
         colsSum[i]=colsSum[i]+matrix[j][i];
        }
        if(maxRowValue<rowsSum[i])maxRowValue=rowsSum[i];
        if(maxColValue<colsSum[i])maxColValue=colsSum[i];
    }

    List<Integer> rowIndices = new ArrayList<>();
    List<Integer> colIndices = new ArrayList<>();

    for (int i=0;i<n;i++){
        if(rowsSum[i]==maxRowValue)rowIndices.add(i);
        if(colsSum[i]==maxColValue)colIndices.add(i);
    }
    System.out.println("The random array is: ");
    System.out.println(Arrays.deepToString(matrix).replaceAll("[^01\\]]","").replaceAll("]","\n"));
    System.out.println("Largest row index: " + rowIndices.toString().replaceAll("[^\\d,]",""));
    System.out.println("Largest column index: " + colIndices.toString().replaceAll("[^\\d,]",""));

}

}

1 个答案:

答案 0 :(得分:1)

\d是一个数字(相当于[0-9]),[]是一个字符组,而字符组中的^表示不是。

所以[^\d]表示不是数字,或等同于[^0-9]

在String文字中,您需要转义\。

供您参考: http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html