public class split {
public static void main(String args[]){
Scannersc=newScanner(System.in);intmask=32;intn=sc.nextInt();charresp;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)
A
Aleeh
continua repetindo a resposta amigo, quero que volte ao if(n & mask)!=0) para digitar novamente um valor, tendeu.
staroski
Que valores você está digitando ao rodar o programa?
A
Aleeh
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.
staroski
Qual número inteiro você está digitando?
H
Heihel
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!
staroski1 like
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
}
A
Aleeh1 like
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.