Leitura De Código Java Duplicada

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

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()).

3 curtidas

OK Muito Obrigado pela diga @staroski

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

Posta o seu código atual.

[code] 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();
}

}[/code]

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()

2 curtidas

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

[code]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();
}

}[/code]