Array multidimensional em java

Java

08/04/2013

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

Carlos Leonel

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

08/04/2013

Opa, tá parecendo trabalho de curso...
Qual é sua dúvida exatamente?
GOSTEI 0
Carlos Leonel

Carlos Leonel

08/04/2013

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.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

08/04/2013

Em que tipo de aplicação será isso? Console?
Você sabe trabalhar com arrays?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

08/04/2013

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í.
GOSTEI 0
Carlos Leonel

Carlos Leonel

08/04/2013

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
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

08/04/2013

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.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

08/04/2013

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();
}

GOSTEI 0
Carlos Leonel

Carlos Leonel

08/04/2013

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.

GOSTEI 0
Carlos Leonel

Carlos Leonel

08/04/2013

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 "*".

GOSTEI 0
Joel Rodrigues

Joel Rodrigues

08/04/2013

* 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.
GOSTEI 0
Carlos Leonel

Carlos Leonel

08/04/2013

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?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

08/04/2013

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.
GOSTEI 0
Carlos Leonel

Carlos Leonel

08/04/2013

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

Joel Rodrigues

08/04/2013

A parte que solicita que o usuário digite tá funcionando?
GOSTEI 0
Carlos Leonel

Carlos Leonel

08/04/2013

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.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

08/04/2013

Cara, eu fiz em C#, pois não tenho nem um IDE Java aqui. Veja se consegue converter: [url]http://pastebin.com/FRtCmv8e[/url]
GOSTEI 0
Carlos Leonel

Carlos Leonel

08/04/2013

verifique se isso aqui funciona:

public java.util.Scanner;
public class teste{

public static void imprimir (int[][] num)
{
Scanner input = new Scanner (System.in);
for(int i=0; i< num.lenght;i++)
{
for (int j=0; j<num[i].lenght;j++)
{
System.out.printf("%2d", num[i][j]);
}
}
}

public static void imprimir (int[][] num)
{
Scanner input = new Scanner (System.in);
do
{

for(int i=0; i< num.lenght;i++)
{
System.out.print("Informe a posição da linha: ");
num[i][j] = input.nextInt();
System.out.println();

for (int j=0; j<num[i].lenght;j++)
{
System.out.print("Informe a posição da linha: ");
num[i][j] = input.nextInt();
System.out.println();
}
}
} while(num[i][j] == 0);
}

public static void imprimir (int[][] num)
{
Scanner input = new Scanner (System.in);
for(int i=0; i< num.lenght;i++)
{
for (int j=0; j<num[i].lenght;j++)
{
if (num[i][j]!=0)
{
System.out.print("Informe outro valor: ");
num[i][j] = input.nextInt();
}else
System.out.print("A posição já foi preenchida!");
}
}
}

public static void main();
{
Scanner input = new Scanner (System.in);
int [][] num = new int[5][4];
preencher(valor);
imprimir(valor);
testar(valor);
}
} while(num[i][j] == 0);
}
GOSTEI 0
Carlos Leonel

Carlos Leonel

08/04/2013

public java.util.Scanner;
public class teste{

public static void imprimir (int[][] num)
{
Scanner input = new Scanner (System.in);
for(int i=0; i< num.lenght;i++)
{
for (int j=0; j<num[i].lenght;j++)
{
System.out.printf("%2d", num[i][j]);
}
}
}

public static void imprimir (int[][] num)
{
Scanner input = new Scanner (System.in);
do
{

for(int i=0; i< num.lenght;i++)
{
System.out.print("Informe a posição da linha: ");
num[i][j] = input.nextInt();
System.out.println();

for (int j=0; j<num[i].lenght;j++)
{
System.out.print("Informe a posição da linha: ");
num[i][j] = input.nextInt();
System.out.println();
}
}
} while(num[i][j] == 0);
}

public static void imprimir (int[][] num)
{
Scanner input = new Scanner (System.in);
for(int i=0; i< num.lenght;i++)
{
for (int j=0; j<num[i].lenght;j++)
{
if (num[i][j]!=0)
{
System.out.print("Informe outro valor: ");
num[i][j] = input.nextInt();
}else
System.out.print("A posição já foi preenchida!");
}
}
}

public static void main();
{
Scanner input = new Scanner (System.in);
int [][] num = new int[5][4];
preencher(valor);
imprimir(valor);
testar(valor);
}
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

08/04/2013

É que como eu disse, não tenho como testar aqui. Você testou?
GOSTEI 0
POSTAR