Dúvida Do while

import java.util.Scanner;

public class split {
public static void main(String args[]){

	Scanner sc = new Scanner(System.in);
	
	int mask = 32;
	int n=sc.nextInt();
	char resp;
	
	do{
	
	if((n & mask)!=0){
		System.out.println("6th bit is true");
	}else{
		System.out.println("6th bit is false");
		}
	System.out.println("Deseja repetir s/n ?");
	resp =sc.next().charAt(0);
	}while(resp != 'n');
	
	sc.close();

}

}

Não está repetindo de forma que eu digite novamente um valor, quando digito ‘s’ ele retorna o resultado da condição, é possivel usar o do while na estrutura do if else ???

Quando utilizar um objeto Scanner para ler do teclado, utilize somente o método nextLine(), outros métodos não tratam a quebra de linha gerada ao pressionar ENTER.

Sendo assim, faça o seguinte:

Troque o sc.nextInt() por Integer.parseInt(sc.nextLine())

Troque o sc.next().charAt(0) por sc.nextLine().charAt(0)

continua repetindo a resposta amigo, quero que volte ao if(n & mask)!=0) para digitar novamente um valor, tendeu.

Que valores você está digitando ao rodar o programa?

primeiro um número inteiro, então o programa me retorna uma resposta em seguida digito “s” ou qualquer outro digito para repetir, e ai que mora o problema ele me retorna o resultado de novo, e quero que retorne para usuário digitar novamente.

Qual número inteiro você está digitando?

Amigo, sou iniciante também. Porém acredito que essa linha onde você solicita a entrada do usuário deveria ficar dentro do bloco DO. Eu acredito que como você digita algo diferente de n no final o sistema volta ao início do DO. Porém sua solicitação ao usuário está fora do bloco. O sistema então realiza tudo de novo usando o valor que já está lá. Tente mudar essa linha para dentro do bloco DO.

Creio que dessa forma, ao digitar “n” você será direcionado para o início do bloco DO. Colocando essa linha acima do IF o usuário será convidado a digitar um novo valor para consulta.

Espero ter ajudado e desculpe se falei bobagem! Abraços e boa sorte!

Ele não está fazendo um E lógico, está fazendo um E aritmético para verificar se determinado bit está ligado.

Só que o teste está errado.
Se você quer testar se determinado bit está ligado ou desligado, seu teste tem que ser assim:

if ((n & mask) == mask) { 
   // Ligado
} else {
   // Desligado
}
1 curtida

89 por exemplo, tenho resultado falso, e quando digito “s” vem repetindo o resultado, porem o amigo [Heihel] creio que matou a charada rs, creio que o o int n = sc.nextInt(); deve estar dentro do DO.Chegando em casa vou fazer o teste.

1 curtida

Valeu Companheiro, era isso mesmo !

1 curtida