Probleminha.. não consegui encontrar o erro

Alguém pode dar uma analisada no que estou tentando fazer?
Ele não entra pra digitar o valor da variável confirm e também na está validando direito ela!!
Sem falar que na última parte entra num looping infinito por causa da porcaria da comfirm!!

Código:

import java.util.*;
public class Aula2{
public static void main(String[] args){
Scanner entrada = new Scanner(System.in);
float f=0;
String confirm=“S”;

do{
  System.out.print("Digite um valor com ponto flutuante: ");
  f = entrada.nextFloat();
  if(f >= 1.99 && f <= 5.99)
    System.out.println("O número " +f +" esta entre 1.99 e 5.99");
  else
    if(f < 1.99)
      System.out.println("O número " +f +" é menor que 1.99");
  else
    System.out.println("O número " +f +" é maior que 5.99");
  System.out.println("Deseja fazer esta operação novamente?(S/N): "); //Independente das condições acima, ele deveria entrar aqui e me deixar digitar a opção
  confirm = entrada.nextLine(); //Ele não entra aqui!!!
  confirm = confirm.toUpperCase();
  if(confirm != "S" || confirm != "N"){ //Neste momento, mesmo a string estando iniciada em S, ele entra
   while(confirm != "S" || confirm != "N"){
    System.out.print("Opção invalida, digite S = Sim ou N = Não: "); //e vem para ca, e independente da entrada que eu informo, ele entra num looping infinito
    confirm = entrada.nextLine();
    confirm = confirm.toUpperCase();
   }
  }
 }while(confirm == "S");

}
}

/*Grato desde já,

  • Vagner Nascimento
    */

Vagner, comparação de strings é sempre com equals. Nunca com “==” ou “!=”.

Testa assim:

import java.util.*; 

public class Aula2{ 

	public static void main(String[] args){ 
		
		Scanner entrada = new Scanner(System.in); 
		float f=0; 
		String confirm="S"; 

		do{ 
			System.out.print("Digite um valor com ponto flutuante: "); 
			f = entrada.nextFloat(); 
			
			if(f >= 1.99 && f <= 5.99){ 
				System.out.println("O número " +f +" esta entre 1.99 e 5.99"); 
			} else if(f < 1.99) { 
				System.out.println("O número " +f +" é menor que 1.99"); 
			} else { 
				System.out.println("O número " +f +" é maior que 5.99"); 
			}
			
			System.out.println("Deseja fazer esta operação novamente?(S/N):");  
			confirm = entrada.next();
			confirm = confirm.toUpperCase(); 
			while(!confirm.equals("S") && !confirm.equals("N")){ 
				System.out.print("Opção invalida, digite S = Sim ou N = Não: ");  
				confirm = entrada.nextLine(); 
				confirm = confirm.toUpperCase(); 
			} 
			
		} while(confirm.equals("S")); 
	} 
} 

Para seu código ficar mais “apresentável” tente substituir o uso da String confirma para um boolean confirm. Fica mais fácil de entender e o código fica mais limpo!

Galera, MUITO OBRIGADO MESMO pela ajuda!!! \o/ Funcionou perfeitamente.
Aprendi mais um macete crussial para meu aprendizado. rsrsrs
Agora quanto ao uso de variável do tipo boolean, fiquei com uma dúvida: Como eu farei para associar as entradas de teclado S e N à true e false?

Valeu galera… Abraço!

Se a entrada for ‘S’ seta como ‘true’, senão seta como ‘false’…

Da próxima vez, posta o código tbm dentro da TAG Code…

É um botãozinho logo acima da caixa de mensagem que você escreve…

Abraços :wink:

Se resolveu, coloque a TAG [Resolvido] no título do tópico!!

:smiley:

[]'s