Lukujen ja rivien lukeminen
nextInt, nextLine ja sudenkuopat
Lukujen ja rivien lukeminen on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/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.
Tyypitettyjen lukujen lukeminen
Scanner voi lukea luvut suoraan metodeilla, kuten nextInt ja nextDouble. Ne muuntavat seuraavan tunnisteen vastaavan primitiivityypin arvoksi.
Kokonaisluvun lukeminen
nextInt() lukee seuraavan tunnisteen ja palauttaa sen int-arvona. Tässä käytetään kiinteää merkkijonoa, jotta esimerkki toimii ilman kirjoittamista.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("25");
int age = scanner.nextInt();
System.out.println(age + 1);
scanner.close();
}
}Double-luvun lukeminen
nextDouble() lukee liukuluvun. Sen jälkeen voitte käyttää sitä laskutoimituksissa.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("3.5");
double radius = scanner.nextDouble();
System.out.println(radius * 2);
scanner.close();
}
}Useiden lukujen lukeminen
Useat peräkkäiset lukukutsut lukevat tunnisteet yksi toisensa jälkeen ja ohittavat niiden välissä olevat tyhjämerkit.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("10 20 30");
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
System.out.println(a + b + c);
scanner.close();
}
}Summaaminen loppuun asti
Yhdistäkää hasNextInt() ja nextInt(), kun haluatte lukea ennalta tuntemattoman määrän lukuja.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("5 15 25 35");
int total = 0;
while (scanner.hasNextInt()) {
total += scanner.nextInt();
}
System.out.println(total);
scanner.close();
}
}Tunnettu nextLine-kompastuskivi
Tässä on klassinen sudenkuoppa: nextInt() lukee luvun mutta jättää rivinvaihtomerkin puskuriin. Seuraava nextLine() lukee tällöin odottamanne tekstin sijaan jäljelle jääneen tyhjän rivin.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("42\nHello World");
int n = scanner.nextInt();
String line = scanner.nextLine();
System.out.println("Number: " + n);
System.out.println("Line: [" + line + "]");
scanner.close();
}
}Sudenkuopan korjaaminen
Korjaus on kutsua ylimääräinen nextLine() heti nextInt()-kutsun jälkeen, jotta jäljelle jäävä rivinvaihto kulutetaan ennen varsinaisen rivisyötteen lukemista.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("42\nHello World");
int n = scanner.nextInt();
scanner.nextLine();
String line = scanner.nextLine();
System.out.println("Number: " + n);
System.out.println("Line: [" + line + "]");
scanner.close();
}
}long- ja boolean-arvojen lukeminen
Scanner tarjoaa myös metodit nextLong ja nextBoolean sekä muita vastaavia metodeja. Kukin niistä lukee vastaavan tyyppisen tokenin.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("9000000000 true");
long big = scanner.nextLong();
boolean flag = scanner.nextBoolean();
System.out.println(big);
System.out.println(flag);
scanner.close();
}
}Väärän tyyppinen syöte aiheuttaa poikkeuksen
Jos seuraava token ei ole kelvollinen luku, nextInt heittää InputMismatchException-poikkeuksen. Tarkistakaa epävarmoissa tilanteissa aina ensin hasNextInt.
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("abc");
try {
scanner.nextInt();
} catch (InputMismatchException e) {
System.out.println("Not an integer!");
}
scanner.close();
}
}Lukujen turvallinen lukeminen
Luotettava toimintamalli lukee syötteen vain, kun saatavilla on oikean tyyppinen arvo. Muussa tapauksessa se lukee ja hylkää virheellisen tokenin.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("x 7 y 9");
int sum = 0;
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
sum += scanner.nextInt();
} else {
scanner.next();
}
}
System.out.println(sum);
scanner.close();
}
}Tärkeät muistettavat asiat
Käyttäkää lukuihin nextInt- ja nextDouble-metodeja, varmistakaa syötteen kelvollisuus hasNext-perheen metodeilla ja muistakaa kuluttaa jäljelle jäävä rivinvaihto ennen siirtymistä nextLine-metodin käyttöön.
Pikatarkistus
Testatkaa lukujen ja rivien lukemista koskeva osaamisenne.
Kertaus
Opitte lukemaan lukuja ja rivejä:
nextInt,nextDoublejanextLonglukevat tietyn tyyppisiä lukuja- Käyttäkää
hasNextInt-metodia silmukassa, kun syötteiden määrää ei tiedetä etukäteen - Rivinvaihdon sudenkuoppa: kutsukaa ylimääräistä
nextLine-metodianextInt-metodin jälkeen - Virheelliset tokenit aiheuttavat
InputMismatchException-poikkeuksen - Varmistakaa lukujen lukeminen turvalliseksi
hasNext-perheen metodeilla
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 ”Lukujen ja rivien lukeminen” ilmainen?
Kyllä – oppitunnin ”Lukujen ja rivien lukeminen” 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 ”Lukujen ja rivien lukeminen”?
nextInt, nextLine ja sudenkuopat 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 2/4.
Kuinka kauan ”Lukujen ja rivien lukeminen”-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
- Syötteen lukeminen Scannerilla
- Lukujen ja rivien lukeminen
- Käyttäjän syötteen tarkistaminen
- BufferedReader-vaihtoehto