Leitura De Código Java Duplicada

7 respostas
Marcelo980

no seguinte trecho de código

private void Adicionar (){

do{

System.out.println("Deseja Adicionar Quantas OS ? ");

quantOS = ler.nextInt();

for(i =0; i < quantOS; i++){

System.out.println(Digite o Nome do Solicitante :”);

Nome[i] = ler.nextLine();

System.out.println(Digite o Setor do Solicitante :”);

Setor[i] = ler.nextInt();

System.out.println(Digite a Observação do Serviço :”);

Observacao[i] = ler.nextLine();

}

System.out.println(Deseja Adicionar mais Alguem < 1-Sim / 2-Nao>);

Resposta = ler.nextInt();

}while (Resposta != 2);

}

Ao inves de pegar apenas um valor Exemplo o Nome[i]
apresenta :
Digite o Nome do Solicitante :
Digite o Setor do Solicitante :

E faz a leitura no Setor[i] ao invés de Nome[i]

Tudo na mesma linha de codigo, ao passar pro proximo do mesmo jeito :
Digite a Observação do Serviço :
Digite o Nome do Solicitante :

o que pode esta causando esse erro ? e algum lixo de memoria ? Eu sou iniciante em java. :slight_smile:
Aguardo Resposta Att. Marcelo Henrique

7 Respostas

staroski

O nextInt() não consome a quebra de linha quando você pressiona o ENTER, o único método da classe Scanner que consome a quebra de linha é o nextLine().

Troque as suas chamadas ao ler.nextInt() por Integer.parseInt(ler.nextLine()).

Marcelo980

OK Muito Obrigado pela diga @staroski

Marcelo980

Fiz o teste em um vetor de inteiro funciona normalmente porem de caracter “String” o erro da repetição persiste.

staroski

Posta o seu código atual.

Marcelo980
package IA;

/**
 *
 * @author Marcelo Henrique
 */

import java.util.Scanner;
public class Auxiliar {
	private static int Resp = 0;
	private static int RespExibir = 0;
	private static int Resposta ;
	static int n = 100;
	static String Setor[] = new String [n];
	static String Nome[] = new String [n];
	static String Observacao[] = new String[n];
	static Scanner ler = new Scanner(System.in);
	private int RespostaMenu;
	private static int quantOS;
	private int i;
	private int Opcao2Menu;

	public String[] getSetor() {
		return Setor;
	}
	public void setSetor(String[] setor) {
		Setor = setor;
	}
	public String[] getNome() {
		return Nome;
	}
	public void setNome(String[] nome) {
		Nome = nome;
	}
	public String[] getObservacao() {
		return Observacao;
	}
	public void setObservacao(String[] observacao) {
		Observacao = observacao;
	}
	private void Adicionar (){
			do{
				for(int cont = 0; cont < 1; cont ++){
					System.out.println("Digite o Nome do Solicitante :");
					Nome[cont] = ler.nextLine();
					System.out.println("Digite o Setor do Solicitante :");
					Setor[cont] = ler.nextLine(); 
					System.out.println("Digite a Observação do Serviço :");
					Observacao[cont] = ler.nextLine();
				}
				System.out.println("Deseja Adicionar Mais Alguma  < 1-Sim / 2-Nao>");
				Resposta = ler.nextInt();
			}while (Resposta != 2);
			Opcao2Menu = 0;
	}
	public void BuscarPorTodas (){
		for(int cont =0; cont <= i; cont++){
			System.out.println("Nome Solicitante : "+Nome[cont]);
			System.out.println("Setor : "+Setor[cont]);
			System.out.println("Observações : "+Observacao[cont]+"\n");
		}			
	}
	private void BuscarPorNumero(){
			System.out.println("Esta com um total de :"+i+" Numeros de OS");
			do{
				System.out.println("Deseja Visualizar Qual OS ? ");
				int cont = ler.nextInt();
				System.out.println("Nome Solicitante : "+Nome[cont]);
				System.out.println("Setor : "+Setor[cont]);
				System.out.println("Observações : "+Observacao[cont]+"\n");
				System.out.println("Deseja Visualizar outra OS <1- Sim / 2- Nao>");
				Resp = ler.nextInt();
			}while(Resp != 1);
	}
	private void BuscarPorNome (){
		for(int cont = 0; cont  < i; cont++ ){
			System.out.println("Nome :"+Nome[cont]+"\n");
		}
	}
	private void BuscarPorSetor (){
		for(int cont = 0; cont  < i; cont++ ){
			System.out.println("Setor :"+Setor[cont]+"\n");
		}
	}
	public void MenuExibir(){
		if (i < 1){
			System.out.println("Opção invalida !!!" +
					"Ainda nao foi cadastrado nenhuma OS no Sistema !\n");
			Opcao2Menu = 1;
		}
		if(i >= 1){
			do{
				System.out.println("#----------------------------Menu----------------------------------#");
				System.out.println("#                        Seja Bem Vindo                            #");
				System.out.println("#                                                                  #");
				System.out.println("#          1- Buscar OS por Numero                                 #");
				System.out.println("#          2- Visualizar todas as OS                               #");
				System.out.println("#          3- Visualizar Lista de todas as OS por Nome             #");
				System.out.println("#          4- Visualizar Lista de todas as OS por Setor            #");
				System.out.println("#          5- Sair                                                 #");
				System.out.println("#------------------------------------------------------------------#");
				System.out.println("Digite a opcao desejada para visualizar");
				RespExibir = ler.nextInt();
			
				switch (RespExibir){
				case 1: 
					BuscarPorNumero();
					MenuExibir();
					break;
				case 2: 
					BuscarPorTodas();
					MenuExibir();
					break;
				case 3: 
					BuscarPorNome();
					MenuExibir();
					break;
				case 4: 
					BuscarPorSetor();
					MenuExibir();
					break;
				case 5:
					Menu();
					break;
				default : 
					System.out.println("Opção Invalida !!!");
				}
			}while(RespExibir != 5);
		}
	}
	private void Editar (){
		if (i < 1){
			System.out.println("Opção Invalida !!!" +
					"Ainda nao foi cadastrado nenhuma OS no Sistema !\n");
			Opcao2Menu = 1;
		}
		if(i >= 1){
			do{
				System.out.println("Degite o Numero da OS que voce deseja editar ");
				int cont = ler.nextInt();
				System.out.println("Nome Solicitante : "+Nome[cont]);
				System.out.println("Setor : "+Setor[cont]);
				System.out.println("Observações : "+Observacao[cont]+"\n");
				System.out.println("Deseja Editar outra OS <1- Sim / 2- Nao>");
				Resp = ler.nextInt();
			}while(Resp != 2);
		}
	}
	public void Excluir(){
		if (i < 1){
			System.out.println("Opção invalida !!" +
					"Ainda nao foi cadastrado nenhuma OS no Sistema !\n");
			Opcao2Menu = 1;
		}
		if(i >= 1){
			do{
				System.out.println("Degite o Numero da OS que voce deseja Excluir ");
				int cont = ler.nextInt();
				if(Nome[cont] == "" ){
					System.out.println("OS Não Existe!");
					Menu();
				}else{
					Nome[cont] = "";
					Setor[cont] ="";
					Observacao[cont] = "";
					System.out.println("OS Excluida com sucesso \n");
				}
				System.out.println("Deseja Excluir outra OS <1- Sim / 2- Nao>");
				Resp = ler.nextInt();
			}while(Resp != 2);
		}
	}
	private void Menu (){
		do{
			System.out.println("#---------------Menu---------------#");
			System.out.println("#         Seja Bem Vindo           #");
			System.out.println("#                                  #");
			System.out.println("#          1- Adicionar OS         #");
			System.out.println("#          2- Vizualizar           #");
			System.out.println("#          3- Editar               #");
			System.out.println("#          4- Excluir              #");
			System.out.println("#          5- Sair                 #");
			System.out.println("#----------------------------------#");
			RespostaMenu = ler.nextInt();
		
			switch (RespostaMenu){
			case 1: 
				Adicionar();
				Menu();
				break;
			case 2:
				MenuExibir();
				Menu();
				break;
			case 3:
				Editar();
				Menu();
				break;
			case 4:
				Excluir();
				Menu();
				break;
			case 5:
				System.out.println("Saindo do Sistema ...");
				System.exit(10);
				break;
			default : 
				System.out.println("Opção invalida ");
			}
		}while(RespostaMenu != 3);
	}
	public static void main(String[] args) {
		Auxiliar IA = new Auxiliar();
		IA.Menu();
	}
}
staroski

Poxa, seu código continua usando o ler.nextInt().

Como já foi explicado, o ler.nextInt() não consome a quebra de linha.
Então essa quebra de linha fica guardada em um buffer até que seja chamado o método ler.nextLine().

Você tem duas alternativas:

  1. Substituir todas suas chamadas do ler.nextInt() por Integer.parseInt(ler.nextLine())

  2. Sempre chamar o ler.nextLine() imediatamente após ter chamado o ler.nextInt()

Marcelo980

Esse e o código anterior ainda não tive tempo de alterá-lo, pois estava no trabalho quando vc me solicitou o código, Mas ja fiz a alteração funcionou perfeitamente Obg. Segue abaixo o Codigo Corrigido.
Att.: Marcelo Henrique

package IA;

/**
 *
 * @author Marcelo Henrique
 */

import java.util.Scanner;
public class Auxiliar {
	private static int Resp = 0;
	private static int RespExibir = 0;
	private static int Resposta ;
	static int n = 100;
	static String Setor[] = new String [n];
	static String Nome[] = new String [n];
	static String Observacao[] = new String[n];
	static Scanner ler = new Scanner(System.in);
	private int RespostaMenu;
	private static int quantOS;
	private int i;
	private int Opcao2Menu;

	public String[] getSetor() {
		return Setor;
	}
	public void setSetor(String[] setor) {
		Setor = setor;
	}
	public String[] getNome() {
		return Nome;
	}
	public void setNome(String[] nome) {
		Nome = nome;
	}
	public String[] getObservacao() {
		return Observacao;
	}
	public void setObservacao(String[] observacao) {
		Observacao = observacao;
	}
	private void Adicionar (){
			do{
				for(i = 0; i < 1; i ++){
					System.out.println("Digite o Nome do Solicitante :");
					Nome[i] = ler.nextLine();
					System.out.println("Digite o Setor do Solicitante :");
					Setor[i] = ler.nextLine(); 
					System.out.println("Digite a Observação do Serviço :");
					Observacao[i] = ler.nextLine();
				}
				System.out.println("Deseja Adicionar Mais Alguma  < 1-Sim / 2-Nao>");
				Resposta = Integer.parseInt(ler.nextLine());
			}while (Resposta != 2);
			Opcao2Menu = 0;
	}
	public void BuscarPorTodas (){
		for(int cont =0; cont <= i; cont++){
			System.out.println("Nome Solicitante : "+Nome[cont]);
			System.out.println("Setor : "+Setor[cont]);
			System.out.println("Observações : "+Observacao[cont]+"\n");
		}			
	}
	private void BuscarPorNumero(){
			System.out.println("Esta com um total de :"+i+" Numeros de OS");
			do{
				System.out.println("Deseja Visualizar Qual OS ? ");
				int cont = ler.nextInt();
				System.out.println("Nome Solicitante : "+Nome[cont]);
				System.out.println("Setor : "+Setor[cont]);
				System.out.println("Observações : "+Observacao[cont]+"\n");
				System.out.println("Deseja Visualizar outra OS <1- Sim / 2- Nao>");
				Resp =  Integer.parseInt(ler.nextLine());
			}while(Resp != 1);
	}
	private void BuscarPorNome (){
		for(int cont = 0; cont  < i; cont++ ){
			System.out.println("Nome :"+Nome[cont]+"\n");
		}
	}
	private void BuscarPorSetor (){
		for(int cont = 0; cont  < i; cont++ ){
			System.out.println("Setor :"+Setor[cont]+"\n");
		}
	}
	public void MenuExibir(){
		if (i < 1){
			System.out.println("Opção invalida !!!" +
					"Ainda nao foi cadastrado nenhuma OS no Sistema !\n");
			Opcao2Menu = 1;
		}
		if(i >= 1){
			do{
				System.out.println("#----------------------------Menu----------------------------------#");
				System.out.println("#                        Seja Bem Vindo                            #");
				System.out.println("#                                                                  #");
				System.out.println("#          1- Buscar OS por Numero                                 #");
				System.out.println("#          2- Visualizar todas as OS                               #");
				System.out.println("#          3- Visualizar Lista de todas as OS por Nome             #");
				System.out.println("#          4- Visualizar Lista de todas as OS por Setor            #");
				System.out.println("#          5- Sair                                                 #");
				System.out.println("#------------------------------------------------------------------#");
				System.out.println("Digite a opcao desejada para visualizar");
				RespExibir =  Integer.parseInt(ler.nextLine());
			
				switch (RespExibir){
				case 1: 
					BuscarPorNumero();
					MenuExibir();
					break;
				case 2: 
					BuscarPorTodas();
					MenuExibir();
					break;
				case 3: 
					BuscarPorNome();
					MenuExibir();
					break;
				case 4: 
					BuscarPorSetor();
					MenuExibir();
					break;
				case 5:
					Menu();
					break;
				default : 
					System.out.println("Opção Invalida !!!");
				}
			}while(RespExibir != 5);
		}
	}
	private void Editar (){
		if (i < 1){
			System.out.println("Opção Invalida !!!" +
					"Ainda nao foi cadastrado nenhuma OS no Sistema !\n");
			Opcao2Menu = 1;
		}
		if(i >= 1){
			do{
				System.out.println("Degite o Numero da OS que voce deseja editar ");
				int cont = ler.nextInt();
				System.out.println("Nome Solicitante : "+Nome[cont]);
				System.out.println("Setor : "+Setor[cont]);
				System.out.println("Observações : "+Observacao[cont]+"\n");
				System.out.println("Deseja Editar outra OS <1- Sim / 2- Nao>");
				Resp =  Integer.parseInt(ler.nextLine());
			}while(Resp != 2);
		}
	}
	public void Excluir(){
		if (i < 1){
			System.out.println("Opção invalida !!" +
					"Ainda nao foi cadastrado nenhuma OS no Sistema !\n");
			Opcao2Menu = 1;
		}
		if(i >= 1){
			do{
				System.out.println("Degite o Numero da OS que voce deseja Excluir ");
				int cont =  Integer.parseInt(ler.nextLine());
				if(Nome[cont] == "" ){
					System.out.println("OS Não Existe!");
					Menu();
				}else{
					Nome[cont] = "";
					Setor[cont] ="";
					Observacao[cont] = "";
					System.out.println("OS Excluida com sucesso \n");
				}
				System.out.println("Deseja Excluir outra OS <1- Sim / 2- Nao>");
				Resp =  Integer.parseInt(ler.nextLine());
			}while(Resp != 2);
		}
	}
	private void Menu (){
		do{
			System.out.println("#---------------Menu---------------#");
			System.out.println("#         Seja Bem Vindo           #");
			System.out.println("#                                  #");
			System.out.println("#          1- Adicionar OS         #");
			System.out.println("#          2- Vizualizar           #");
			System.out.println("#          3- Editar               #");
			System.out.println("#          4- Excluir              #");
			System.out.println("#          5- Sair                 #");
			System.out.println("#----------------------------------#");
			RespostaMenu =  Integer.parseInt(ler.nextLine());
		
			switch (RespostaMenu){
			case 1: 
				Adicionar();
				Menu();
				break;
			case 2:
				MenuExibir();
				Menu();
				break;
			case 3:
				Editar();
				Menu();
				break;
			case 4:
				Excluir();
				Menu();
				break;
			case 5:
				System.out.println("Saindo do Sistema ...");
				System.exit(10);
				break;
			default : 
				System.out.println("Opção invalida ");
			}
		}while(RespostaMenu != 3);
	}
	public static void main(String[] args) {
		Auxiliar IA = new Auxiliar();
		IA.Menu();
	}
}
Criado 3 de setembro de 2019
Ultima resposta 4 de set. de 2019
Respostas 7
Participantes 2