Array multidimensional em java
fazer com que o usuario escolha a posicao no array multidimensional 5x4, fazer ele preencher todo array
Carlos Leonel
Curtidas 0
Respostas
Joel Rodrigues
08/04/2013
Opa, tá parecendo trabalho de curso...
Qual é sua dúvida exatamente?
Qual é sua dúvida exatamente?
GOSTEI 0
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
08/04/2013
Em que tipo de aplicação será isso? Console?
Você sabe trabalhar com arrays?
Você sabe trabalhar com arrays?
GOSTEI 0
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í.
Acho que você vai conseguir fazer a partir daí.
GOSTEI 0
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
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.
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
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
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.
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
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 "*".
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
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
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
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.
É preciso rever o algoritmo.
GOSTEI 0
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
08/04/2013
A parte que solicita que o usuário digite tá funcionando?
GOSTEI 0
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.
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
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
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);
}
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
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);
}
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
08/04/2013
É que como eu disse, não tenho como testar aqui. Você testou?
GOSTEI 0