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:

  1. sc este o variabilă, poţi folosi orice alt nume în loc de sc (de exemplu: tastatura)
  2. 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);
  }
  
}

Atunci când vrei să citeşti ceva, este bine să afişezi în primul rând un mesaj care să indice utilizatorului că urmează o citire. Este recomandat să faci acest lucru pentru a înţelege complet ce se întâmplă cu programul tău.

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.

Soluţie

Soluţie

import java.util.Scanner;

public class Reading {
  
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    
    System.out.println("Cum te cheama?");
    String nume = sc.next();
    System.out.println("Te cheama " + nume);
    
    System.out.println("Cati ani ai?");
    int varsta = sc.nextInt();
    System.out.println("Ai " + varsta + " ani");
    
    System.out.println("Cat castigi?");
    double salariu = sc.nextDouble();
    System.out.println("Pe luna ai doar " + salariu + ", cred ca in lei.");
  }
  
}


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

Soluţie

Soluţie

import java.util.Scanner;

public class Reading {
  
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    
    String nume;
    int varsta;
    String ocupatie;
    int numarCopii;
    String masina;
    
    System.out.print("Cum te cheama? ");
    nume = sc.next();
    System.out.print("Cati ani ai? ");
    varsta = sc.nextInt();
    System.out.print("Ce ocupatie ai? ");
    ocupatie = sc.next();
    System.out.print("Cati copii ai? ");
    numarCopii = sc.nextInt();
    System.out.print("Ce masina conduci? ");
    masina = sc.next();
    
    System.out.println("Te cheama " + nume);
    System.out.println("Si ai o varsta de " + varsta + " ani");
    System.out.println("Lucrezi ca " + ocupatie);
    System.out.println("Ai " + numarCopii + " copii");
    System.out.println("Si conduci " + masina);
  }
  
}


3. Realizează un program simplu care cere utilizatorului 3 numere şi afişează media lor aritmetică.

Soluţie

Soluţie

import java.util.Scanner;

public class Reading {
  
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    
    int nr1;
    int nr2;
    int nr3;
    
    System.out.println("Introduceti primul numar:");
    nr1 = sc.nextInt();
    System.out.println("Introduceti al doilea numar:");
    nr2 = sc.nextInt();
    System.out.println("Introduceti al treilea numar:");
    nr3 = sc.nextInt();
    
    int suma = nr1 + nr2 + nr3;
    double media = suma / 3.0;
    
    System.out.println("Media celor 3 numere este: " + media);
  }
  
}


Resurse

Discussion

, 2016/01/25 17:44

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

at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
      at Precourse.Citire.main(Citire.java:15)

@Ex: 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);
}

}

, 2016/01/25 19:26

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.

You could leave a comment if you were logged in.