Vetor em java

12 respostas
gisa_screen

ola …

bem tenho que criar um programa…ja criei pacotes e classes…e declarei 2 vetores para armazenar nomes e telefones
agora …tenho dúvidas… Como faço para armazenar no vetor até o usuário digitar "fim"?

vejam como inicieii …se tiver errado me corrija por favor…obs:fiz vetor com os nomes por enquanto…

String nome[] = new String[3];
String telefones[] = new String[3];
nome[0] = new String('Joao');
nome[1] = new String('Maria');
nome[2] = new String('Marcos');

// exibição do conteúdo do vetor
for (int i=0; i<3; i++) {
	System.out.println( nome[i]);
}

valeu!

pre

12 Respostas

Regis_A_Rocha

voce teria que fazer uma validaçao antes de armazenar no vetor se o que o usuario digitou é igual a “fim”

for(int i=0; i<3;i++){
   if(nome.equals("fim"))
     break;
   else
     // armazena no vetor
}
gisa_screen

entendi…mas ta dando erro…pra que serve esse equals?

edufera10

olha as aspas…

nome[0] = new String("João"); nome[1] = new String("Maria"); nome[2] = new String("Marcos");

gisa_screen

as aspas estao corretas…o que quero saber onde encaixo esse for?

se pode me mandar seu emais pra eu poder tirar duvidas com vc?

CrOnNoS

o equals serve para comparar dois objetos. Lembre-se que "String" em java é um objeto e não uma variável primária. comparar uma String nomeUm com uma nomeDois fazendo "nomeUm == nomeDois" não dará certo. Por isso o colega em cima usou o método equals para comparar o objeto 'nome' com um objeto que resulta da String "fim".

Esse for é o que iria executar a leitura dos nomes. Se você estiver usando um objeto Scanner "input" para ler os dados, ficaria algo como:
for (int i = 0;; i++) {
			nome = input.next();
			if (nome.equals("fim"))
				break;
			else
				vetorNomes[i] = nome;
		}
Mas a instrução break; (que nesse caso pararia a execução do for) não é recomendada para usar em casos como esse que prejuticaria a legibilidade do código. Seria melhor algo como:
String nome = "";

		for (int i = 0; !nome.equals("fim"); i++) {
			nome = input.next();
			if (!nome.equals("fim"))
				vetorNomes[i] = nome;
		}
ou:
String nome = "";
		int i = 0;

		while (!nome.equals("fim")) {
			nome = input.next();
			if (!nome.equals("fim"))
				vetorNomes[i] = nome;
			i++;
		}
gisa_screen

veja onde entra esse código dito acima??

veja como ficou

package controle;

import java.util.Scanner;

public class Vetores {

/**
 * @param args
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub

	String[] endereco = new String[3];
	String[] nome = new String[3];
	String[] telefone = new String[3];
	int x;
	int y;
	int i;

	int z = 0;
	y = 0;
	x = 0;

	Scanner teclado1 = new Scanner(System.in);
	Scanner teclado2 = new Scanner(System.in);
	Scanner teclado3 = new Scanner(System.in);

	for (i = 0; i &lt; 4; i = i + 1) {

		System.out.println("Digite seu nome");
		nome[x] = teclado1.nextLine();
		System.out.println("Agora digite seu telefone !!");
		telefone[y] = teclado2.nextLine();
		System.out.println("digite seu endereço valeu?");
		endereco[z] = teclado3.nextLine();

	}
}

}

CrOnNoS

1º Lembre-se de usar a tag Code para colar seu código

O for ficaria no lugar do seu for Usando o segundo for por exemplo, ficaria:
public static void main(String[] args) {
		// TODO Auto-generated method stub

		String[] endereco = new String[3];
		String[] nome = new String[3];
		String[] telefone = new String[3];
		String nomeAtual = "";
		int x;
		int y;
		int i = 0;

		Scanner teclado1 = new Scanner(System.in);
		Scanner teclado2 = new Scanner(System.in);
		Scanner teclado3 = new Scanner(System.in);

		for (i = 0; !nomeAtual.equals("fim"); i++) {

			System.out.println("Digite seu nome");
			nomeAtual = teclado1.nextLine();
			if (!nomeAtual.equals("fim")) {
				nome[i] = nomeAtual;
				System.out.println("Agora digite seu telefone !!");
				telefone[i] = teclado2.nextLine();
				System.out.println("digite seu endereço valeu?");
				endereco[i] = teclado3.nextLine();
			}
		}
	}
Mas repare que como seu vetor só tem 3 componentes, se tentar ler mais que isso o programa vai gerar uma excessão. Para evitar isso você poderia talvez manter a condição do seu for junto:
for (i = 0; !nomeAtual.equals("fim") && i < 3; i++) {
gisa_screen

amigo obrigado…

ainda tenho que apresentar no console uma mensagem “nomes digitado”;
E tbm tem q ter um tratamento de erro para a exceção se caso o usuário digitar mais de tres nomes…caso o problema ocorra o programa deverá exibir a mensagem “Vetor Cheio”

tenho que usar um try e catch? para resolver ?

vou tentar…

CrOnNoS

Usar try e catch é uma forma (deixando a exceção ocorrer), mas nesse caso não é realmente necessário (evitando que ela aconteça. Obs: o último for por exemplo já evitava).
Well, se tiver alguma outra dúvida tentando resolver esses dois problemas sinta-se livre para perguntar.

gisa_screen

eu usei um if assim para o tratamento de erro …caso o usuário digite mas de tres nomes

if (!nomeAtual.equals("fim") | i!=3) {
	            
	      System.out.println("vetor Cheio");
	            
	            }

mas o que acontece que aparece a mensagem “Vetor cheio” toda vez que armazeno um nome e um telefone…porq ue? Tenho que usar o for ou o if mesmo??

queria que mostrasse o erro …quando o usuário tentasse armazenar mais de 3 elementos…

obrigado

A

Porque ele sempre executa esse codigo.

Coloca:

for(...)
 {
  [....]


 }
 if(i >=3)
          {
                   System.out.println("Vetor cheio");
           }


O equals diferente do “==” . Compara a “equivalencia” e não igualdade.

gisa_screen

ah sim ja tinha resolvido e coloquei parecido...com o seu código acima...

só que agora tenho uma dúvida...porque só fiz uma condição pro nome ...quando o usuário digitar"fim" dai sai...e pro telefone tenho que fazer o mesma condição? pois só quando o usuario digita "fim" no nome que da um break...

veja como ficou meu código...

public static void main(String[] args) {
		// TODO Auto-generated method stub

		String[] nome = new String[3];
		String[] telefone = new String[3];
		String nomeAtual = "";
		String telefoneAtual = "";
		int x = 0;
		int y = 0;
		int i = 0;

		Scanner teclado1 = new Scanner(System.in);
		Scanner teclado2 = new Scanner(System.in);

		for (i = 1; !nomeAtual.equals("fim") && i <= 3; i++) {
			System.out.println("Digite seu nome");
			nomeAtual = teclado1.nextLine();
			if (!nomeAtual.equals("fim")) {
				nome[x] = nomeAtual;

			}
		}

		for (i = 1; !telefoneAtual.equals("fim") && i <= 3; i++) {
			System.out.println("Agora digite seu telefone !!");
			telefoneAtual = teclado2.nextLine();
			if (!telefoneAtual.equals("fim")) {
				telefone[y] = telefoneAtual;

			}
		}

		if (i > 3) {

			System.out.println("vetor Cheio");

		}
Criado 12 de agosto de 2009
Ultima resposta 14 de ago. de 2009
Respostas 12
Participantes 5