Olá pessoal! Este é meu primeiro tópico e já vou logo enchendo o saco de vocês!
Estou iniciando no mundo java e surgiram dúvidas na parte de vetores que eu não to conseguindo entender bem a lógica. Tenho um exemplo aqui para expressar algumas dúvidas minhas:
//Faça um programa que leia, Nome idade e sexo de N pessoas. Após a leitura faça:
//a) Imprima o Nome, idade e sexo das pessoas cuja idade seja maior que a idade da primeira pessoa.
//b) Imprima o Nome e idade de todas as mulheres.
//c) Imprima o Nome dos homens menores de 21 anos
Diante disso tenho dúvidas básicas nas 3 alternativas… Tenho apenas uma vaga idéia da lógica de como resolvê-las. Gostaria que vocês, se possível, ajudassem este pobre iniciante que lhes pede ajuda de como (através de dicas e não da resolução do problema) resolver esta básica questão de vetor.
Vou postar o início do meu código (até onde consegui fazer e empaquei…):
public static void main(String [] args){
String nome[] = new String[3];
String idade[] = new String[3];
char sexo[] = new char[3];
for (int i=0; i<nome.length; i++){
System.out.println("Informe o "+(i+1)+" nome:");
nome[i] = ler (nome[i]);
}
for (int i=0; i<idade.length; i++){
System.out.println("Informe a "+(i+1)+" idade:");
idade[i] = ler (idade[i]);
}
for (int i=0; i<sexo.length; i++){
System.out.println("Informe o "+(i+1)+" sexo:");
sexo[i] = ler (sexo[i]);
}
}
//Faça um programa que leia, Nome idade e sexo de N pessoas. Após a leitura faça:
//a) Imprima o Nome, idade e sexo das pessoas cuja idade seja maior que a idade da primeira pessoa.
//b) Imprima o Nome e idade de todas as mulheres.
//c) Imprima o Nome dos homens menores de 21 anos
Para facilitar a sua vida, primeiro vamos entrar com o número N (por que é que você acha que N = 3?) e depois é que vamos ler as coisas. O seu programa deve ter mais ou menos a mesma conversação:
ENTRE COM O NÚMERO DE PESSOAS
> 3
NOME:
> JOSE APARECIDO
IDADE:
> 45
SEXO:
> M
NOME:
> JOANA DARCO
IDADE:
> 20
SEXO:
> F
NOME:
> LUIS INACIO
IDADE:
> 70
SEXO:
> M
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class GUJ {
static BufferedReader reader =
new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) {
String nome[] = new String[3];
Integer idade[] = new Integer[3];
String sexo[] = new String[3];
for (int i=0; i<nome.length; i++){
System.out.println("Informe o "+(i+1)+" nome:");
nome[i] = ler();
System.out.println("Informe a "+(i+1)+" idade:");
idade[i] = new Integer(ler());
System.out.println("Informe o "+(i+1)+" sexo:");
sexo[i] = ler();
}
// a) Imprima o Nome, idade e sexo das pessoas cuja idade
// seja maior que a idade da primeira pessoa.
System.out.println("\nA)");
for (int i=0; i<nome.length; i++){
if (idade[i].intValue() > idade[0].intValue()) {
System.out.println("Nome: " + nome[i]);
System.out.println("Idade: " + idade[i]);
System.out.println("Sexo: " + sexo[i]);
}
}
// b) Imprima o Nome e idade de todas as mulheres.
System.out.println("\nB)");
for (int i=0; i<nome.length; i++){
if (sexo[i].equalsIgnoreCase("F")) {
System.out.println("Nome: " + nome[i]);
System.out.println("Idade: " + idade[i]);
}
}
// Imprima o Nome dos homens menores de 21 anos
System.out.println("\nC)");
for (int i=0; i<nome.length; i++){
if ((sexo[i].equalsIgnoreCase("M"))
&& (idade[i].intValue() > 21)) {
System.out.println("Nome: " + nome[i]);
}
}
}
public static String ler() {
String entrada = "";
try {
entrada = reader.readLine();
} catch (Exception e) {
System.out.println("Erro ao ler entrada do usuario.");
}
return entrada;
}
}
dá uma olhada e estuda o código…é a melhor dica que posso te dar…
8)
Olá a todos! agradeço de de coração a ajuda que já me deram até agora.
Já deu uma clareada boa nas idéias as dicas de vcs.
TangZero, como estou no começo do java, algumas linhas do seu código não foram ensinadas por meu professor.
Vou passar o código da função “ler” que estamos usando aqui:
//ler - ( BYTE )
public static byte ler ( byte x ) {
String valor="";
DataInputStream in = new DataInputStream(System.in);
try{
valor=in.readLine();
x= Byte.valueOf(valor).byteValue();
}
catch(Exception e) {System.out.println("ERRO");}
return (x);
}
//ler - ( SHORT )
public static short ler ( short x ) {
String valor="";
DataInputStream in = new DataInputStream(System.in);
try{
valor=in.readLine();
x= Short.valueOf(valor).shortValue();
}
catch(Exception e) {System.out.println("ERRO");}
return (x);
}
//ler - ( INT )
public static int ler ( int x ) {
String valor="";
DataInputStream in = new DataInputStream(System.in);
try{
valor=in.readLine();
x= Integer.valueOf(valor).intValue();
}
catch(Exception e) {System.out.println("ERRO");}
return (x);
}
//ler - ( LONG )
public static long ler ( long x ) {
String valor="";
DataInputStream in = new DataInputStream(System.in);
try{
valor=in.readLine();
x= Long.valueOf(valor).longValue();
}
catch(Exception e) {System.out.println("ERRO");}
return (x);
}
//ler - ( FLOAT )
public static float ler ( float x ) {
String valor="";
DataInputStream in = new DataInputStream(System.in);
try{
valor=in.readLine();
x= Float.valueOf(valor).floatValue();
}
catch(Exception e) {System.out.println("ERRO");}
return (x);
}
//ler - ( DOUBLE )
public static double ler ( double x ) {
String valor="";
DataInputStream in = new DataInputStream(System.in);
try{
valor=in.readLine();
x= Double.valueOf(valor).doubleValue();
}
catch(Exception e) {System.out.println("ERRO");}
return (x);
}
//ler - ( CHAR )
public static char ler ( char x ) {
char y = ' ';
String valor="";
DataInputStream in = new DataInputStream(System.in);
try{
valor=in.readLine();
x = valor.charAt(0);
}
catch(Exception e) {System.out.println("ERRO");}
return (x);
}
//ler - ( STRING )
public static String ler ( String x ) {
String valor="";
DataInputStream in = new DataInputStream(System.in);
try{
valor=in.readLine();
}
catch(Exception e) {System.out.println("ERRO");}
return (valor);
}
}
Chamamos essa função por um comando IMPORT java.io.DataInputStream no começo.
Por isso algumas linhas do seu código não rodam aqui, e preciso seguir esta função leia nos meus estudos. Mas, sua dica foi de mta valia, obrigado mesmo.
Para saber o maior numero e o menor numero vc vai ter que percorrer o vetor. Ai vc vai fazer assim:
Você diz que o primeiro elemento do vetor é o maior e o menor;
Começa a percorrer o vetor a partir do segundo elemento e vai comparando o elemento do vetor com o maior e o menor.
// se elemento do vetor for menor que a variavel menor: menor = vetor[i]
// se elemento do vetor for maior que a variavel maior: maior = vetor[i]
Olha como seria o código que vc percorreria:
[code] int maior, menor, i;
int vetor[10];
maior = vetor[0];
menor = vetor[0];
for(i=1;i < 10;i++)
{
if(vetor[i] > maior)
maior = vetor[i];
Como calcular a média de 20 números inseridos em um vetor? Preciso usar uma variável auxiliar para pegar valores do índice? To perdido em como ler posições no total, posições específicas do vetor e fazer operações com elas.
Se tenho uma matriz [10][10] como somar apenas os elementos da 2 coluna?
Francislon, teu código sempre me retorna valor 0 na leitura do menor número do vetor. O que pode estar ocorrendo cara?
blza…como diz a velha e não menos engraçada piada: “vamos por partes”.
media:
digamos q vc já tenha um vetor preenchido:
int [] array = {10,9,7,5,4,2,3,6,4};
voce pode criar um metodo que calcula a media e retorna um int da seguinte forma:
int calculaMedia(int [] array){
int total=0;
for (int i = 0; i < array.length;i++){
//aqui vc vai somando as posicoes do vetor
total = total + array[i];
}
//depois e so calcular a media. o total dividido pela quantidade. // Lembra da variavel lenght???
int media = total / array.length;
//depois e so retornar a media
return media;
}
Agora vamos para a Matriz:
//criamos a matriz
String [][] matriz = new String [3][];
//atribuimos na ´pos. 0, a segunda dimensao com 2 posicoes
matriz [0] = new String[1];
//agora é so ir adicionando como descrito:
matriz [0][0] = "indice 0 posicao zero";
matriz [0][1] = "indice 1 posicao um";
matriz [1] = new String[2];
matriz [1][0] = "indice 1 posicao zero";
matriz [1][1] = "indice 2 posicao dois";
[quote=Java_Student]Pessoal to com uma dúvida na seguinte questao:
Faça um programa para ler uma matriz 3x3 real e imprimir a soma
dos elementos da diagonal principal.
Já declarei os elementos das duas matrizes sem problema.
Agora não to entendendo quais seriam os elementos da diagonal principal e como somá-los.
Quem puder dar um help agradeço.[/quote]
Elementos na diagonal principal são aqueles cujos indices são iguais.
Se a matriz é NxN existem N desses elementos. São obtidos com um for em que o i é usado nos dois indices da matriz (tipo matriz[i][i] )