Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    stampare colonne array bidimensionale

    Ciao a tutti, ho un problema devo fare un programma in java che lavori sulle matrici. Ho creato una classe che implementa i metodi: int[] getRiga(int i) e int[] getColonna(int j); essi devono ritornare rispettivamente un'array contenente la riga i e la colonna j della matrice ecco il codice:

    codice:
    public class Matrice {
    	
    	//campi	
    	public int[][] a;
    	public int righe, colonne;
    	
    	//costruttore	
    	public Matrice(int x, int y) {
    		
    		a = new int[x][y];
    		righe = x;
    	    colonne = y;
    		
    	}
    	
    	//metodi		
    	public int[] getRiga(int i) {
    
    		int[] array = {0};
    
            array = this.a[i];
    					
    			for(int j = 0; j<this.colonne; j++) {
    		
    				System.out.println(array[j]);
    			}
    			
    			return array;
    	}		
    				
    		
    	public int[] getColonna(int j) {
    		
    		int[] array = {0};
    		
    		array = this.a[j];
    		
    		for(int i = 0; i<righe; i++) {
    			
    			System.out.println(array[i]);
    		}
    		
    		return array;
    	}
    }
    Il problema è sul metodo getColonna, e credo anche di sapere il perchè, in pratica dovrey assegnare ad array il nuovo numero di colonne j, ma non capisco come fare... potete darmi una mano?

    vi metto anche il main:

    codice:
    import java.io.*;
    
    class Soluzione {
    	
    	public static void main(String[] args) {
    		
    		Matrice array = new Matrice(2,3);
    		
    		array.a[0][0] = 1;
    		array.a[0][1] = 2;
    		array.a[0][2] = 3;
    		array.a[1][0] = 4;
    		array.a[1][1] = 5;
    		array.a[1][2] = 6;
    		
    		int[] provaRiga;
    		int[] provaColonna;
    		
    		provaRiga = array.getRiga(0);
    		
    		System.out.println("------------------------------");
    		
    		provaColonna = array.getColonna(1);
    		
    	}
    }

    Grazie

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    attento che se hai più colonne che righe così ti scoppia anche :-)

    non basta usare j per dire che vuoi la colonna, la notazione a[j] rappresenta la riga della matrice con indice j

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: stampare colonne array bidimensionale

    Originariamente inviato da ferra03
    codice:
    	//metodi		
    	public int[] getRiga(int i) {
    
    		int[] array = {0};
    
            array = this.a[i];
    					
    			for(int j = 0; j<this.colonne; j++) {
    		
    				System.out.println(array[j]);
    			}
    			
    			return array;
    	}		
    				
    		
    	public int[] getColonna(int j) {
    		
    		int[] array = {0};
    		
    		array = this.a[j];
    		
    		for(int i = 0; i<righe; i++) {
    			
    			System.out.println(array[i]);
    		}
    		
    		return array;
    	}
    }
    Il problema è sul metodo getColonna, e credo anche di sapere il perchè, in pratica dovrey assegnare ad array il nuovo numero di colonne j, ma non capisco come fare... potete darmi una mano?
    Il punto è che in getRiga() teoricamente puoi anche far restituire direttamente quella riga della matrice .... perché una riga È un array che si trova tra i reference nell'array principale!! Anche se forse sarebbe meglio istanziare e restituire un nuovo array e copiarci i dati.

    Per getColonna() non puoi semplicemente restituire "qualcosa" che c'è già, devi per forza istanziare un nuovo array, copiarci i dati della colonna e restituirlo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Per getColonna() non puoi semplicemente restituire "qualcosa" che c'è già, devi per forza istanziare un nuovo array, copiarci i dati della colonna e restituirlo.



    E' proprio questo che non capisco come fare

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ferra03
    E' proprio questo che non capisco come fare
    Il numero di colonne lo sai, è uno dei campi dell'oggetto. Istanzi un nuovo array di quella dimensione, fai un ciclo "for" per copiare da a[k][colonnaRichiesta] a nuovoArray[k] dove k è l'indice della colonna i-esima.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.