Java Academy · Oppitunti

Syötteen lukeminen Scannerilla

Lue käyttäjän syöte System.in-lähteestä

Oppitunti 1/413 vaihetta

Syötteen lukeminen Scannerilla on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 4 oppituntia.

Lukeminen näppäimistöltä

Käyttäjän kirjoittaman syötteen lukemista varten Java tarjoaa java.util-paketin Scanner-luokan. Liittäkää se System.in-olioon, joka on vakiomuotoinen syötevirta.

Scanner helpottaa sanojen, rivien ja lukujen lukemista.

Scannerin luominen

Luokaa Scanner välittämällä sille System.in. Näissä esimerkeissä käytetään kiinteitä merkkijonoja, jotta ne toimivat ilman syötettä, mutta samat metodit toimivat myös näppäimistösyötteellä.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("Hello");
        String word = scanner.next();
        System.out.println(word);
        scanner.close();
    }
}

Yhden sanan lukeminen

next() lukee yhden tunnisteen eli tekstin seuraavaan tyhjämerkkiin asti. Välilyönnit ja rivinvaihdot erottavat tunnisteet toisistaan.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("apple banana cherry");
        System.out.println(scanner.next());
        System.out.println(scanner.next());
        scanner.close();
    }
}

Koko rivin lukeminen

nextLine() lukee kaiken rivin loppuun asti, välilyönnit mukaan lukien. Käyttäkää sitä, kun syöte sisältää useita yhteen kuuluvia sanoja.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("John Smith");
        String fullName = scanner.nextLine();
        System.out.println("Name: " + fullName);
        scanner.close();
    }
}

Lisäsyötteen tarkistaminen

hasNext() palauttaa arvon true niin kauan kuin jäljellä on tunnisteita. Näin voitte toistaa silmukkaa, kunnes syöte on käsitelty loppuun.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("red green blue");
        while (scanner.hasNext()) {
            System.out.println(scanner.next());
        }
        scanner.close();
    }
}

Lukeminen rivi kerrallaan

Yhdistäkää hasNextLine() ja nextLine(), kun haluatte käsitellä monirivisen syötteen yhden rivin kerrallaan.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("line one\nline two\nline three");
        while (scanner.hasNextLine()) {
            System.out.println("> " + scanner.nextLine());
        }
        scanner.close();
    }
}

Esimerkki oikeasta näppäimistösyötteestä

Varsinaista käyttäjän syötettä varten kirjoittaisitte alla olevat rivit. Kokeilkaa niitä paikallisesti: ohjelma odottaa kohdassa nextLine, kunnes kirjoitatte jotain ja painatte Enter-näppäintä.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter your name: ");
        String name = scanner.nextLine();
        System.out.println("Hello, " + name);
        scanner.close();
    }
}

Scannerin sulkeminen

Kutsumalla close()-metodia vapautatte resurssin. Siistimpi tapa on try-with-resources-rakenne, joka sulkee scannerin automaattisesti lohkon päättyessä.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        try (Scanner scanner = new Scanner("data here")) {
            System.out.println(scanner.next());
        }
    }
}

next ja nextLine

Muistakaa keskeinen ero: next() pysähtyy tyhjämerkkiin ja palauttaa yhden tunnisteen, kun taas nextLine() lukee nykyisen rivin loppuosan.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("first second third");
        System.out.println(scanner.next());
        System.out.println(scanner.nextLine());
        scanner.close();
    }
}

Mukautetut erottimet

Voitte muuttaa tunnisteiden erotinta metodilla useDelimiter. Tässä pilkku erottaa arvot toisistaan tyhjämerkkien sijaan.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("a,b,c");
        scanner.useDelimiter(",");
        while (scanner.hasNext()) {
            System.out.println(scanner.next());
        }
        scanner.close();
    }
}

Scannerin perusteet

Luokaa yksi Scanner kohteelle System.in, käyttäkää next-metodia sanoihin ja nextLine-metodia kokonaisiin riveihin, toistakaa syötettä hasNext-metodiperheen avulla ja sulkekaa scanner aina.

Pikatarkistus

Testatkaa Scannerin perusteiden hallinta.

Kertaus

Opitte lukemaan syötettä Scannerilla:

  • Luokaa se komennolla new Scanner(System.in)
  • next() lukee sanan ja nextLine() kokonaisen rivin
  • Toistakaa lukemista metodeilla hasNext() tai hasNextLine()
  • Sulkekaa scanner metodilla close() tai try-with-resources-rakenteella
  • useDelimiter muuttaa tunnisteiden erotinta
Aloita maksutta

Opi Java tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
104
Oppitunnit
374

Usein kysytyt kysymykset

Onko oppitunti ”Syötteen lukeminen Scannerilla” ilmainen?

Kyllä – oppitunnin ”Syötteen lukeminen Scannerilla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Syötteen lukeminen Scannerilla”?

Lue käyttäjän syöte System.in-lähteestä Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Syötteen lukeminen Scannerilla”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?

Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Syötteen lukeminen Scannerilla
  2. Lukujen ja rivien lukeminen
  3. Käyttäjän syötteen tarkistaminen
  4. BufferedReader-vaihtoehto
← Takaisin: Java Academy