Array multidimensional em java

08/04/2013

4

fazer com que o usuario escolha a posicao no array multidimensional 5x4, fazer ele preencher todo array
Responder

Posts

09/04/2013

Joel Rodrigues

Opa, tá parecendo trabalho de curso...
Qual é sua dúvida exatamente?
Responder

11/04/2013

Carlos Leonel

seguinte tenho que fazer um array multidimensional 5x4 em que o próprio usuário escolherá em que posição ele deseja colocar o nº sendo que o sistema deverá informá-lo que, caso a posição já esteja ocupada, ele deverá escolher outra posição. Só um detalhe somente valores positivos.Nota isso não é trabalho de curso diga-se de passagem.
Responder

11/04/2013

Joel Rodrigues

Em que tipo de aplicação será isso? Console?
Você sabe trabalhar com arrays?
Responder

11/04/2013

Joel Rodrigues

Dê uma olhada nesse link: [url]http://www.homeandlearn.co.uk/java/multi-dimensional_arrays.html[/url]
Acho que você vai conseguir fazer a partir daí.
Responder

11/04/2013

Carlos Leonel

respondendo a pergunta do colega sim para array multidimensional e unidimensional. Só não sei por onde começar o que está sendo pedido. Uso Eclipse Juno versão 1.7
Responder

12/04/2013

Joel Rodrigues

Você cria o vetor e preenche ele todo com um valor padrão, por exemplo -1. Isso se faz com dois loops encadeados.
Em seguida, faz um laço para ir pedindo ao usuário a linha e a coluna onde ele deseja inserir o valor e o valor propriamente dito. Então você verifica se o elemento da posição solicitada já tem um valor diferente de -1, se tiver, é por que já foi preenchido, senão, você passa o valor para esse elemento.
Responder

12/04/2013

Joel Rodrigues

Cara, eu mexi muito pouco com Java na minha vida, mas veja se esse código te ajuda (fiz no notepad, então pode ter um bocado de probleminha):
int[][] numeros = new int[5][4];

int linhas = 5;
int colunas = 4;

//inicia todos os números com -1
for(int i = 0; i < linhas; i++)
{
	for(int j = 0; i < colunas; i++)
	{
		numeros[i][j] = -1;	
	}	
}

Scanner in = new Scanner(System.in);

string opcao = "s";

while(opcao == "s")
{
	System.out.println("Informe a linha onde deseja inserir o valor:");
	int x = in.nextInt();
	System.out.println("Informe a coluna onde deseja inserir o valor:");
	int y = in.nextInt();
	if(numeros[x][y] != -1)
	{
		System.out.println("Informe o valor que deseja inserir nessa posição:");	
		numeros[x][y] = in.nextInt();
	}
	else
	{
		System.out.println("O elemento desta posição já foi preenchido.");	
	}
	System.out.println("Deseja continuar? s/n");		
	opcao = int.next();
}

Responder

13/04/2013

Carlos Leonel

Na verdade preciso fazer dois métodos:
1º para solicitar o usuário digitar a posição da linha e da coluna e em seguida o valor que ele quer;
2º ao digitar outro valor ele, caso seja na mesma posição, ele informe que a posição já foi ocupada que deve escolher outra posição (nota ele não deve trocar de lugar com outro);
Estou tentando fazer aqui. Mando o código depois.
Obrigado.

Responder

13/04/2013

Carlos Leonel

import java.util.Scanner;
public class teste {
public static void imprimir (int [][]num)
{
for(int i = 0;i<num.length;i++)
{
for(int j=0;j<num[i].length;j++)
System.out.printf("%2d", num[i][j]);
System.out.println();
}
}
public static void iniciar(int[][]num)
{
Scanner input = new Scanner(System.in);
int linha=5, coluna=4;

for(int i = 0;i<linha;i++)
{
for(int j=0;j<coluna;j++)
{
num[i][j]= -1;

}
}
}
public static void testar(int[][]num)
{
Scanner input = new Scanner(System.in);
String opcao = "s";
int x,y;
while(opcao == "s")
{
System.out.println("Informe a linha onde deseja inserir o valor:");
x = input.nextInt();
System.out.println("Informe a coluna onde deseja inserir o valor:");
y = input.nextInt();

if(num[x][y] != -1)
{
System.out.println("Informe o valor que deseja inserir nessa posição:");
num[x][y] = input.nextInt();
}else
{
System.out.println("O elemento desta posição já foi preenchido.");
}
System.out.println("Deseja continuar? s/n");
opcao = input.next();
}


}

/**
* @param args
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int [][]valor = new int[5][4];
iniciar(valor);
testar(valor);
imprimir(valor);
// TODO Auto-generated method stub

}

}


dá como resultado:
-1 -1 -1 -1
-1 -1 -1 -1
-1 -1 -1 -1
-1 -1 -1 -1
-1 -1 -1 -1

no caso aqui eu queria que no lugar do zero fosse 0 ou "*".

Responder

13/04/2013

Joel Rodrigues

* não pode por que é um array de inteiros. Para botar zero, é só usar 0 no lugar de -1, no loop em que se preenche o array, igualando todos os elementos a -1. Mas 0 não vai ser um valor válido? Ou seja, os valores informados devem ser maiores ou iguais a 1? Se for, beleza. É só fazer a substituição que eu falei.
Responder

14/04/2013

Carlos Leonel

Tudo bem, vou deixar como está. Mas porque o resultado está saindo -1? Não deveria ser o número digitado e sua posição? E porque ao ser perguntado qual o número ele já vai informando que o lugar já foi preenchido e deseja continuar?
Responder

14/04/2013

Joel Rodrigues

Se ta mostrando -1 é por que os elementos nao estão sendo preenchidos com os valores que o usuário digitou. E

É preciso rever o algoritmo.
Responder

15/04/2013

Carlos Leonel

tem como rever este código. Ele será pois apartir dele poderei desenvolver array mutildimensional em diagonais e aplicar em Algebra linear.
Responder

15/04/2013

Joel Rodrigues

A parte que solicita que o usuário digite tá funcionando?
Responder

15/04/2013

Carlos Leonel

A lógica seria mais ou menos assim:
a) Informe a posição da linha (ex: 2 linha);
b) Informe a posição da coluna (ex: 3 coluna);
c) Digite o valor para o array (ex: 5)
d) Que ele somente pare de digitar até que o array esteja todo preenchido, e que, seja informado para ele caso o local já esteja ocupado, que ele escolha outro.

Tem como fazer este array multidimensional 5x4 em apenas um método ou será preciso dois métodos. Quero aprender fazer este código pois será a base para aplicá-lo em Algebra Linear (Matriz).

Obrigado.
Responder