Como calcular os números pares de uma matriz bidimensional e gravá-los em um arquivo?

She3nro:

Eu preciso calcular até mesmo números de uma matriz bidimensional e gravá-los em um arquivo, eu sou novo em java e escreveu este código, mas ele não funciona, por favor me diga qual é o problema e como corrigi-lo

 static void ex6(int[][] A) throws IOException{
   FileWriter fw = new FileWriter("ParCol.txt");
   int[][] posA=new int[A.length][A[0].length];
    for(int i=0;i<A.length;i++) {

       for(int j=0;j<A[0].length;j++) {
           if(A[0][j] % 2 == 0) {
               posA[i][j]=A[i][j];

           }
       }
   }

   fw.write((A.length)+" "+A[0].length+"\n");
   for(int i=0;i<posA.length;i++) {
       for(int j=0;j<posA[0].length;j++) {
           fw.write(posA[i][j]+" ");
       }
       fw.write("\n");
   }}
Jason:

Existem várias questões.

  1. Está assumindo que todas as matrizes nessa matriz 2d são todos o mesmo comprimento como pode ser visto abaixo.
int[][] posA=new int[A.length][A[0].length];
  1. Você está apenas loop através da matriz encontrada no primeiro índice do array 2D como visto abaixo.
 for(int j=0;j<A[0].length;j++) {
  1. Envolva seu FileWriter em um try-com-recursos.

É preciso percorrer todas as matrizes nessa matriz 2d. Você não especificou, mas eu suponho que você quer cada um em uma nova linha com base no código existente.

    static void ex6(int[][] array) throws IOException {
        try (FileWriter fw = new FileWriter("ParCol.txt")) {
            for (int i = 0; i < array.length; i++) {
                int[] iArray = array[i];

                for (int j = 0; j < iArray.length; j++) {
                    int value = iArray[j];

                    if (value % 2 == 0) {
                        fw.write(Integer.toString(value));
                        fw.write("\n");
                    }
                }
            }
        }
    }

Java 8 Solução

    static void j8(Path path, int[][] array) throws IOException {
        String content = Stream.of(array)
                .flatMapToInt(IntStream::of)
                .filter(value -> value % 2 == 0)
                .mapToObj(Integer::toString)
                .collect(Collectors.joining("\n"));

        Files.write(path, content.getBytes(), StandardOpenOption.CREATE_NEW, StandardOpenOption.TRUNCATE_EXISTING);
    }

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=359754&siteId=1
Recomendado
Clasificación