Matriz e vetores

2 respostas
W

Olá pessoal, estou fazendo alguns exercícios, com arrays bidimensionais, cujo o qual preciso criar um retângulo, um preenchido e outro com contorno e nada internamente...
O preenchido esta ok, agora não estou conseguindo imaginar como criar o retângulo apenas com contorno passando medidas via metodo.. alguém pode me dar uma dica?...

********************
*-----------------------------*
*-----------------------------*
********************

Retângulo preenchido:

********************
********************
********************
********************

public class RetanguloPreenchido {
    
    
    char [][] tamanho;
    char sterisco = '*';
    
    public void criaFigura(int lado, int altura){
        
        tamanho = new char[altura][lado];
        
        for (int i = 0; i < altura; i++) {
            for (int j = 0; j < lado; j++){
                 tamanho [i][j]= sterisco;
            }
        }
        
    }
    
    
    public void imprimeFigura(){
        
        for (char[] cs : tamanho) {
            System.out.println(cs);
        }
        
        
    }
    
    
    public static void main(String[] args) {
        
        RetanguloPreenchido r1 = new RetanguloPreenchido();
        r1.criaFigura(20, 4);
        r1.imprimeFigura();
        
    }
    
    
}

Obrigado desde já!

2 Respostas

heatcold

dentro do loop mais interno (j) :

se ((i == 0) ou (j == 0) ou (i == altura - 1) ou (j == lado - 1)) entao tamanho [i][j] = sterisco;

W

Vlew cara, ajudo bastante a sua logica... Fiz ele assim como voce falo e funciono:

public class RetanguloContorno {
    
    Character steri = null;
    char [][] tamanho;
    char sterisco = '*';
    
    public void criaFigura(int altura,int lado){
        
        
        //Imprime superior e inferior
        tamanho = new char[altura][lado];
        int limiteAbaixo = tamanho.length;
        for (int i = 0; i < altura; i++) {
            for (int j = 0; j < lado; j++){
                if((i==0) || (i==altura-1)){ 
                tamanho [i][j]= sterisco;}
            }
        }
        
        
        //Imprime lados
        for (int i = 0; i < altura; i++) {
            for (int j = 0; j < lado; j++){
                if((j==0) || (j==lado-1)){ 
                tamanho [i][j]= sterisco;}
            }
        }
        
        
        
        // Limpa os campos em branco
        for (int i = 0; i < altura; i++) {
            for (int j = 0; j < lado; j++){
                if(tamanho [i][j] != sterisco) 
                tamanho [i][j]= ' ';
            }
        }
       
        
    }
    
    
    public void imprimeFigura(){
        
        for (char[] cs : tamanho) {
            System.out.println(cs);
        }
        
        
    }
    
    
    public static void main(String[] args) {
        
        RetanguloContorno r1 = new RetanguloContorno();
        r1.criaFigura(4, 20);
        r1.imprimeFigura();
        System.out.println(r1.tamanho.length);
    }
    
    
    
}

A unica duvida que fiquei foi que tive que montar um FOR para limpar as areas em brancas, pois ela imprimia e ficava um quadrado, nao entendi o poque, alguem tem alguma ideia?

Criado 15 de novembro de 2011
Ultima resposta 17 de nov. de 2011
Respostas 2
Participantes 2