Citirea de la tastatură
Majoritatea programelor sunt făcute pentru a interacţiona cu utilizatorul, nu doar pentru afişare. Cea mai simplă modalitate este să introducem ceva de la tastatură, apoi să prelucrăm valorile şi să întoarcem rezultatul.
Citirea reprezintă un mecanism mai complex, aşadar este nevoie de ceva mai complex din Java. Cea mai uşoară modalitate de a realiza citirea este să folosim clasa Scanner
. Fiind o clasă mai complexă, va trebui să specificăm faptul că vrem să o utilizăm. Pentru a face acest lucru, înainte să ne definim propriul program (propria clasă), vom apela instrucţiunea import java.util.Scanner
.
import java.util.Scanner; public class Reading { public static void main(String[] args) { // scrie codul aici! } }
Scanner, la fel ca şi String este o clasă. În schimb, nu o putem folosi ca pe celelalte tipuri de date de până acum. Este necesar să creăm un obiect din clasa respectivă care să poată efectua citirea de la tastatură.
import java.util.Scanner; public class Reading { public static void main(String[] args) { Scanner sc; // declarăm o variabilă Scanner sc = new Scanner(System.in); // creăm obiectul } }
Pentru moment, poţi folosi cele două instrucţiuni de mai sus în toate programele de care ai nevoie de citire. Nu trebuie să înţelegi în întregime cum funcționează, dar reţine următoarele 2 aspecte:
sc
este o variabilă, poţi folosi orice alt nume în loc desc
(de exemplu:tastatura
)- nu mai ai voie sa ai alte variabile definite cu acelşi nume (de exemplu:
int sc;
)
Pentru a efectua efectiv citirea, va trebui să apelăm o serie de instrucţiuni (mai exact metode) astfel încât să ii spunem că vrem să ne citească anumite valori. Poţi folosi exemplul de mai jos pentru a citi un număr întreg.
import java.util.Scanner; public class Reading { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Ce numar vrei?"); int numar = sc.nextInt(); System.out.println("Ai ales numarul " + numar); } }
Poţi face la fel pentru a citi 2 numere întregi, apoi să efectuezi diverse operaţii cu ele.
import java.util.Scanner; public class Reading { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Ce numar vrei?"); int numar = sc.nextInt(); System.out.println("Ce alt numar vrei?"); int numar2 = sc.nextInt(); System.out.println("Ai ales numerele " + numar + " " + numar2); } }
Pentru a citi şi alte tipuri de date, avem alte metode ale clasei Scanner
, cum ar fi nextDouble()
sau next()
.
import java.util.Scanner; public class Reading { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Ce numar real vrei?"); double numarReal = sc.nextDouble(); System.out.println("Ai ales numarul " + numarReal); System.out.println("Cum te cheama?"); String nume = sc.next(); System.out.println("Deci te cheama " + nume); } }
Exerciţii
1. Întreabă utilizatorul cum îl cheamă. Afişează numele şi întreabă-l câţi ani are. Afişează vârsta şi întreabă cât câştigă. Afişează salariul. Foloseşte variabile corespunzătoare pentru valorile introduse.
2. Cere utilizatorului câteva informaţii (nume, vârstă, ocupaţie, numărCopii, maşina) şi afişează-le la sfârşit.
Exemplu
Cum te cheama? Martin Cati ani ai? 30 Ce ocupatie ai? Urs Cati copii ai? 5 Ce masina conduci? BMW Te cheama Martin Si ai o varsta de 30 ani Lucrezi ca Urs Ai 5 copii Si conduci BMW
3. Realizează un program simplu care cere utilizatorului 3 numere şi afişează media lor aritmetică.
Discussion
Buna,
referitor la eroare despre care am vorbit in clasa este cea atasata. Am vazut pe net ca doar daca introduc linia de cod sc.useLocale(Locale.US); merge ex. Poate tine de versiunea IDE ului meu instalat, aceasta fiind ultima de la Eclipse Jee Mars.
Multumesc!
@Eroarea: Ce numar real vrei? 10.6 Exception in thread "main" java.util.InputMismatchException
@Ex: import java.util.Scanner;
public class Reading {
public static void main(String[] args) {
System.out.println("Ce numar real vrei?");
System.out.println("Cum te cheama?");
}
Problema ta pare ca e legata mai mult de setarile de limba din Windows decat de versiunea de Eclipse.
Incearca sa schimbi limba, daca ai mai multe tastaturi instalate:
Daca nu functioneaza, incearca si variantele de mai jos, in ordine, poate te ajuta:
Mai intai, mergi in Control Panel, la Region and Language. Apoi, asigura-te ca limba este setata pe English (pasul 1), sau ca separatorul pentru zecimale este punctul (pasul 3):
Daca asta nu rezolva problema, mergi si la tab-ul Keyboards and Languages (pasul 1) si vezi daca ai cumva instalata si limba “English (United States) – United States – International” (pasul 2). Daca este, dezinstaleaz-o cu Remove.
A treia optiune ar fi sa mergi la tab-ul Location si sa schimbi locatia pe United States:
Daca nu functioneaza niciuna dintre metode, ramane sa ne mai uitam la laptop-ul tau cand vii cu el la curs, fie vineri, fie luni.