Zero para finalizar

21 respostas
IgorMarinho

pessoal estou com a seguinte dificuldade:

tenho que ler numeros e armazenar em um vetor mas sem limitar o vetor para uma quantidade determinada de numeros ele tem q aceitar numeros até q o usuario digite zero, como faço isso?

21 Respostas

Henrique_Fernandes

Se vc quiser um vetor sem “limites”, umaa boa dica pode ser usar uma list.

WendersonLP
int number, cont = 0;
int[] vet = new int[ 10 ];

while( ( number != 0 )  || ( cont < vet.length ) ) {
         number = read.nextInt();
         vet[ cont ] = number;
         cont++;
}
IgorMarinho

Eu to começando Henrique ainda não sei fazer Lista, isso é pra um trabalho que eu tenho q fazer, bem dificil por sinal.

E eu preciso tirar nota maxima pra passar direto :frowning:

vou requisitar a ajuda de vcs outras vezes…

E obrigado WandersonLP, vou fazer isso.

IgorMarinho

Welington o q é esse comando na linha 6?

read.nextInt();

Marky.Vasconcelos

Algum leitor… o Scanner por exemplo.

WendersonLP

ou isso está simplificado, porque não sei o que ele vai usar
para ler os números,
se vai usar o Scanner ou JOptionPane;

Scanner read = new Scanner( System.in );

desculpa se confundi alguém!
SORRY!

IgorMarinho

Vejam é isso q eu preciso fazer:

i) Cada cartão de aposta possui um número de controle, um inteiro maior que zero, que deverá ser digitado pelo usuário (deverá ser validado o número de controle ? o valor zero indica o fim da leitura dos cartões de aposta);

é uma das especificações do programa, mas para entrada e saida de dados nos usamos uma classe chamada InOut.

quando queremos solicitar que o usuario digite algo fazemos assim:

vet[ind]=InOut.leInt("Digite os numeros sorteados (Entre 00 e 59):");

por isso eu tenho q fazer com os comados bem limitados, alguma sugestão?

lina
WendersonLP:
int number, cont = 0;
int[] vet = new int[ 10 ];

while( ( number != 0 )  || ( cont < vet.length ) ) {
         number = read.nextInt();
         vet[ cont ] = number;
         cont++;
}

Oi,

neste exemplo você está limitando o vetor com tamanho de 10.
Na realidade, quando criado o vetor é obrigatório inicializa-lo.

Por isso o uso de um ArrayList ou uma List é válido.

Você pode criar um ArrayList assim.:

//
// Criação do Array.
//
ArrayList
lo_al_number	=	new ArrayList();
Depois você pode adicionar conteudos no Array, sem ter que definir limites.:
//
// Adiciona conteudo no Array.
//
lo_al_number.add(Object);

E para pegar algum conteudo do array, você pega dest amaneira.:

//
// Recebe o conteudo do Array.
//
lo_al_number.get(int index);

Espero ter ajudado.

Tchauzin!

IgorMarinho

Ajudou sim lina, muito obrigado.

Mas eu não posso usar listas…
tenho q fazer de outra forma :frowning:

WendersonLP

ah, só expilcando

//biblioteca
import java.util.Scanner;

public class Simple {

         public static void main( String args[] ){
                  //cria um objeto de Scanner para leitura
                  //o nome read é opcional, pode ser qualquer um
                  //lei, leitor etc.
                 Scanner read = new Scanner( System.in );
                 
                 char c;
                 int i;
                 float f;
                 double;
                 String s;

                 //faz a leitura dos dados 
                 c = read.nextChar();
                 i = read.nextInt();
                 f = read.nextFloat();
                 d = read.nextDouble();
                 s = read.nextLine(); 
                 
         }
}
lina

Oi,

apenas um exemplo simples para mexer a sua imaginação.:

//
// Contador que irá incrementar o vetor.
//
int
cont			=	1;
		
//
// Limita um vetor de int para 9999.
//
int[]
ln_vet			=	new int[9999];
		
//
// Percorre até digitar o numero 0.
//
while	(true)
{
	//
	// Pergunta o número do cartão.
	//
	int
	ln_number		=	Integer.parseInt(JOptionPane.showInputDialog("Digite o número do cartão: "));
			
	//
	// Se digitado 0.
	//
	if	(
			ln_number 		==	0
		)
	{
		//
		// Para o looping.
		//
		break;
	}
	//
	// Se qualquer outro digito.
	//
	else
	{
		//
		// Adiciona no vetor e incrementa a contagem.
		//
		ln_vet[cont]		=	ln_number;
		cont++;
	}
}
		
//
// Looping apenas para mostrar o conteudo do vetor.
//
for	(
		int
		ln			=	0
		;
		ln			<	ln_vet.length
		;
		ln++
	)
{
	if	(
			ln_vet[ln]			>	0
		)
	{
		System.out.println("Número do cartão de número "+ln+":"+ln_vet[ln]);
	}
}

Tchauzin!

IgorMarinho

Obrigadão lina…

agora vou quebrar a cabeça aqui pra fazer o resto
:smiley:

Marky.Vasconcelos

A lina e sua identação que confunde a mente.

IgorMarinho

é verdade eu tbm senti um pouco de dificuldade por causa da identação…

mas isso é o de menos
Vlw lina :slight_smile:

H

voce pode fazer um classe com um numero de vetor indefinido
cada vez que vc manda um objeto para essa classe. a classe vai inicializar um novo vetor com +1 de tamanho do vetor antigo.

class GuardarInt{

	private int[] Vet = new int[0];	
	
	//Methoden
	public void setNummer(int i)
	{
		int tamanho = Vet.length+1;
		Vet = new int[tamanho];
		Vet[tamanho-1] = i;		
	}
	public int[] getVet()
	{	
		return Vet;
	}

}
IgorMarinho

Vlw hantarox!!!

Boa ideia tbm.

H

O codigo com a Classe GuardarInt iria ficar mais ou menus assim:

Classe GuardarInt

class GuardarInt{  
     
       private int[] Vet = new int[0];   
         
       //Methoden  
       public void setNummer(int i)  
       {  
           int tamanho = Vet.length+1;  
           Vet = new int[tamanho];  
           Vet[tamanho-1] = i;       
       }  
       public int[] getVet()  
       {     
           return Vet;  
       }  
     
   }

Main

public static void main(String[] args) {
		// TODO Auto-generated method stub
		int index;
		GuardaInt lista = new GuardaInt();
		int listaint[];
		
		do
		{
			index = InOut.leInt("Digite os numeros sorteados (Entre 00 e 59):");  //aqui ele le 1 numero e coloca dentro de um Intenger
			if(index != 0){ // se o numero nao for igual ao 0
			lista.setNummer(index); //ele salva o numero na Classe GuardaInt
			}
			else{ //caso seja 0 ele para
				break;
			}			
		}while(true);
		listaint = lista.getVet();
		
		for(int x : listaint) //esse eh a forma simplificade de for(int i = 0; i < listaint.length; i++) 
		{
			System.out.print(x);
		}
	}

Obs: tome cuidado com do-while(true) eh um laço infinito se vc esquecer de colocar break ou fazer de um jeito que ele nao pare. vai ficar rodando e nunca vai parar!!!

espero ter ajudado
Abraco Hantarox

Marky.Vasconcelos

hantarox:
O codigo com a Classe GuardarInt iria ficar mais ou menus assim:

Classe GuardarInt

class GuardarInt{  
     
       private int[] Vet = new int[0];   
         
       //Methoden  
       public void setNummer(int i)  
       {  
           int tamanho = Vet.length+1;  
           Vet = new int[tamanho];  
           Vet[tamanho-1] = i;       
       }  
       public int[] getVet()  
       {     
           return Vet;  
       }  
     
   }

espero ter ajudado
Abraco Hantarox

Cara seu código a cada elemento que voce tenta adicionar ele cria um novo array com uma posição a mais e grava o valor nessa ultima. Mas todos os outros dados são perdidos. Voce precisa copiar os dados antigos pro novo.

H

tem razao Mark_Ameba fiz o codigo rapidinho nao deu pra testar. :?
so o ultimo valor eh salvo.
igual o mark falo tem que copiar os dados.

vlw por avisar

IgorMarinho

OK,
Vlw pessoal, vlw hantarox e mark.

eu consegui fazer o codigo e funcionou certinho

Obrigadão…

B

Haverá problema caso eu use Scanner e JOptionPane juntos?se sim…pq?

sou iniciante e não estou conseguindo resolver a maioria de meus problemas na programação!

obrigado

Criado 23 de junho de 2009
Ultima resposta 6 de set. de 2010
Respostas 21
Participantes 7