Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    [java]equalsIgnoreCase() e nextLine()

    ciao sto imparando da poco java ed eseguendo un semplice esericio sul metedo equalsIgnoreCase() mi è venuto un dubbio...se ho il segunte esercizio(leggere una sequanza di numeri da terminale)
    codice:
    import java.util.Scanner;
    class Uguale{
    public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    String s=sc.next();
    while(!s.equalsIgnoreCase("q")){
    s=sc.next();
    System.out.println(s);
            }
        }
    }
    Il tuto è eseguito e compilato correttamente.Ma qui sorge il dubbio:Perchè nella stringa s usa il metodo next()?Provando a sostituire a next() il meodo nextLine() in esecuzione si crea un loop infinito...perchè?il metodo equalsIgnoreCase() riconosce quindi solo token?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    I due metodi non c'entrano nulla l'uno con l'altro.
    equalsIgnoreCase() è un metodo di String che confronta due stringhe senza tenere conto della differenza fra maiuscole e minuscole. Ad esempio:


    codice:
    String s1 = "CIAO";
    String s2 = "ciao";
    
    System.out.println( s1.equals(s2) );   // restituirà false, perchè le due stringhe sono diverse (una in maiuscolo, l'altra in minuscolo)
    System.out.println( s1.equalsIgnoreCase(s2) );   // restituirà true, perchè non tiene conto di maiuscole/minuscole

    Il metodo next() (che è di Scanner, non c'entra nulla con String) restituisce il prossimo token, secondo i delimitatori standard (nel tuo caso, spazi, caratteri di tabulazione, ecc), mentre nextLine() restituisce la prossima riga letta (l'unico separatore che guarda è il newLine).

    La differenza fra next() e nextLine() è che uno restituisce "una parte della riga digitata" (fino al primo spazio, al primo tab, ecc), mentre l'altro restituisce l'intera stringa... quindi, sostituendo next() con nextLine() per terminare il ciclo devi digitare solamente una lettera Q (in maiuscolo o minuscolo, non fa differenza e nient'altro).


    Ciao.
    Ultima modifica di LeleFT; 04-03-2015 a 17:46
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.