1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

S/N? em Java....

Discussão em 'Programação' iniciada por [BoB]Marley, 16 de Dezembro de 2005. (Respostas: 15; Visualizações: 1148)

  1. [BoB]Marley

    [BoB]Marley To fold or to FOLD?

    já tenho o meu programa (em java) para o projecto de IP acabado, mas ha um promenor que gostava de adicionar mas n sei como pô-lo a funcionar... basicamente é um ciclo que há-de perguntar se tem a certeza ou não para sair, mas aki tá mais simplificado.

    e é o seguinte:

    import java.util.Scanner;
    public class caracter {

    public static void main(String[] args) {

    Scanner sc= new Scanner (System.in);

    String opcao;
    do{
    System.out.println ("(S)im ou (N)ao?");
    opcao=sc.next();
    if (opcao=="S" || opcao=="s"){
    System.out.println ("Sim");
    break;
    }
    if (opcao=="N" || opcao=="n"){
    System.out.println ("Nao");
    break;
    }

    }
    while (opcao!="s" || opcao!="S" || opcao!="N" || opcao!="n") ;
    }


    }


    o que estará mal aki? é ke ao executar, depois de digitar o "s" ou o "n", o ciclo continua >(

    depois de passado o ke passei a fazer o programa, parece estupido n conseguir fazer isto, mas pronto....
     
  2. AwakE

    AwakE Banido

    Já fizeste debug para ver o que está na variavel "opção"? Define opção como char, ou usa no if
    opcao.equals("N").

    Se tiver a dizer bacorada não se admirem que eu só mexo em .Net e ABAP. Mas como o java é parecido com C#...
     
  3. [BoB]Marley

    [BoB]Marley To fold or to FOLD?

    hmmmm.. epa... sinceramente, nem me ocorreu fazer isso... 8o

    e tanta vez que fiz isso durante o programa :X

    vou ver e mais daki pouco digo qq coisa ;)

    thx anyway :)
     
  4. [BoB]Marley

    [BoB]Marley To fold or to FOLD?

    a variavel está a receber o valor... mas o "if" n parece estar a fazer nada... :(

    o ide (Gel) ke tou a usar tb n ajuda mto, mas agora n posso dar-me ao luxo de mudar :\
     
  5. nothing

    nothing Power Member

    Em java não podes comparar strings desse modo.

    esses if's terão de ser algo do género :

    if (opcao.equals("S")||opcao.equals("s"))

    ou melhor ainda

    if (opcao.equalsIgnoreCase("s"))

    outra opção é usares o:

    if (opcao.compareTo("S")<0 || opcao.compareTo("s")<0)
     
  6. santosnm

    santosnm Power Member

    Java!!!! Help Nothing

    NOTHING TOU A VER KE DOMINAS O JAVA NÃO ME QUERES DAR UMAS DICAS,eu quero iniciar-me em Java, se puderes-me mandar sites que falem de java, tutoriais e programas para trabalhar agradecia.

    obrigado.
     
  7. [BoB]Marley

    [BoB]Marley To fold or to FOLD?

    thx nothing! you're da man!

    já tá a bulir. :D o meu problema é ke em todo o programa n precisei de comparar strings, daí o meu desconhecimento... o meu primeiro contacto com a programação java, foi na primeira aula de IP ;)

    já agora o programa corrigido ficou assim:

    import java.util.Scanner;
    public class caracter {

    public static void main(String[] args) {

    Scanner sc= new Scanner (System.in);

    String opcao;
    do{
    System.out.println ("(S)im ou (N)ao?");
    opcao=sc.next();
    System.out.println(opcao);
    if (opcao.equals("S") || opcao.equals("s")){
    System.out.println ("Sim");
    break;
    }
    if (opcao.equals("N") || opcao.equals("n")){
    System.out.println ("Nao");
    break;
    }

    }
    while (opcao!="s" || opcao!="S" || opcao!="N" || opcao!="n") ;

    }


    }
     
  8. MadOnion

    MadOnion Folding Member

    Ou o switch-case, é aí que uso os breaks, senão ele vai estar sempre a perguntar.
    Em que o default é tudo sem ser o N, n, S, s.
    Se precisares da sintaxe diz.
     
  9. [BoB]Marley

    [BoB]Marley To fold or to FOLD?

    quando chegar a casa, é que vou testar junto ao programa, para ver o comportamento....

    depois digo qq coisa ;)

    obrigado a todos pela ajuda... já vi ke há aki grandes "cromos" em java ;)
    eu ainda tenho mto para aprender.... e mta ferrugem para tirar
     
  10. nothing

    nothing Power Member

    Sim, o switch/case também é eficaz para isso, mas primeiro a var opcao terá de ser passada para primitiva (char, int, etc) porque o switch não funciona com Strings.

    De qualquer modo os breaks que tens dentro dos if's estão a mais, porque se o user carregar em "S","s","N" ou "n" ele sai do do{..}while();

    Santosnm,
    O melhor site que anda por aí de Java é mesmo o da Sun, em especial os forums que são excelentes.
     
    Última edição: 16 de Dezembro de 2005
  11. [BoB]Marley

    [BoB]Marley To fold or to FOLD?

    saía, por causa do break :P mas tb n era o caso.... o importante neste caso era "imprimir" o sim ou o nao

    mas de qq maneira, ja integrei no programa do projecto e já tá a bulir 110%... fica um excerto ;)
     
  12. kronos

    kronos Power Member

    tb tens o equaslIgnoreCase acho eu, para comparar independentemente de ser maiuscula ou minuscula.
    Ao comparares da forma que estavas a fazer inicialmente estás a comparar os endereços de memoria em vez da string em si.
     
  13. nothing

    nothing Power Member

    Tem a ver com o facto do tipo String não ser um tipo primitivo de vars em Java. Por isso é que não dá para comparar directamente.
     
  14. ZyPhAX

    ZyPhAX Banido

    Né por nada mas se tivesses lido o que eu escrevi, tava la essa recomendação :P
     
  15. [BoB]Marley

    [BoB]Marley To fold or to FOLD?

    tens razao.... mas passou-me despercebido essa parte.. soryy :X
    thx anyway, you're da man too! ;)


    p.s.: e vê lá se escreves com nick igual, é ke ainda estive uns 5min a tentar perceber o ke kerias dizer :007:
     
  16. ZyPhAX

    ZyPhAX Banido

    Ehehe, um o é o meu, o outro é do meu irmao. Só depois de postar é que reparo que tou com o login errado.
     

Partilhar esta Página