Duvida na busca e remoção de ID (While)

2 respostas
tgmarinho

Bom dia pessoal GUJ!

+ uma vez eu me empacando no Java, vcs não sabem a "relva" q eu fico com isso!
sou mto + tirar duvidas do q ter duvida, como é chato não saber! =(

Gostaria q os amigos me ajudasse a entender o código a partir do while q faz a pesquisa do nr_id do cliente cadastrado, do método removerCliente(). Não entendi a lógica e o funcionamento dessa função!

import java.util.Scanner;

public class Banco 
{
	static int numId[];
	static String nome[];
	static int tipo[];
	static double saldo[];
	static Scanner r;
	static int pos;

	public static void main(String[] args)
	{
		r = new Scanner(System.in);
		
		numId = new int[150];
		nome = new String[150];
		tipo = new int[150];
		saldo = new double[150];
		pos = 0;
		
		menu();
				
	}	
	public static void menu()
	{
		int opt;
		
		do{
			System.out.println("[1] Adicionar Cliente");
			System.out.println("[2] Remover Cliente");
			System.out.println("[3] Listar todos Clientes");
			System.out.println("[4] Sair");
			
			opt = r.nextInt();
			
			switch(opt)
			{
				case 1:
					adicionarCliente();
					break;
				case 2:
					removerCliente();
					break;
				case 3:
					listarClientes();
					break;
				case 4:
					System.out.println("Encerrando o Sistema");
					break;
				default:
					System.out.println("Opção inválida");
								
			}
		}while(opt!=4);
	}
	
		public static void adicionarCliente()
		{
			System.out.println("..........Cadastro.........");
			System.out.println("Nr de indentificação: ");
			numId[pos] = r.nextInt();
			System.out.println("Nome do Cliente: ");
			nome[pos] = r.next();
			System.out.println("Tipo da conta (0 = CC | 1 = Poupança): ");
			tipo[pos] = r.nextInt();
			System.out.println("Saldo: ");
			saldo[pos] = r.nextDouble();
			
			pos++;
		}
		
		[i][b]public static void removerCliente()
		{
			System.out.println("..........Remoção......... ");
			System.out.println("Nr de Identificação");
			int num = r.nextInt();
			
			//busca o cliente pela identificação
			
			int i = 0;
			while(i<pos && numId[i]!=num)
			{
				i++;
				if(i==pos)
					System.out.println("CLIENTE INEXISTENTE");
				else
				{
					for(;i<pos-1;i++)
					{
						numId[i] = numId[i+1];
						nome[i] = nome[i+1];
						tipo[i] = tipo[i+1];
						saldo[i] = saldo[i+1];
					}
					pos--;
				}  //fim else
			}//fim while
		}[/b][/i]
		
		public static void listarClientes()
		{
			for(int i = 0; i < pos; i++)
			{
				System.out.printf("\nNr de Id: %d", numId[i]);
				System.out.printf("\nNome: %s", nome[i]);
				System.out.printf("\ntipo: %d", tipo[i]);
				System.out.printf("\nSaldo: %f", saldo[i]);
			}
		}
		
}//fim do programa
Grato.

Thiago Marinho

2 Respostas

tgmarinho

o que eu entendi foi que:

ex:

eu adiciono7 clientes, ok

ai a pos == 6; pois add 7 clientes e o 1º cliente ta na pos==0;

na hora de remover o cliente Id: 777

a funcão remover faz:

enquanto i = 0 até 6 EE numId[i]!=num //numid[na posicao 0] diferente do numero digitado, faça, incrementa o i++

	i agora vale 1
	
		se 1 == pos q até aq é 6  //essa condicao eh falsa, logo vai para o senao
		faça ("CLIENTE INEXISTENTE");
		

		senao
		;para 1 menor q 5 // 6-1; incrementa o i
		faça
		numId[i] = numId[i+1]; //numid[1] recebe numid[2]?
		nome[i] = nome[i+1]; //numid[1] recebe numid[2]?
		tipo[i] = tipo[i+1];//numid[1] recebe numid[2]?
		saldo[i] = saldo[i+1];//numid[1] recebe numid[2]?

		pos--; // pos vale 5

	fim senao

fim enquanto

entendi + não entendi, oq ta acontecendo com os arrays?

tgmarinho

alguém sabe o trecho while?

Criado 3 de abril de 2010
Ultima resposta 3 de abr. de 2010
Respostas 2
Participantes 1