String

Un String este un şir care conţine mai multe caractere (char, un tip de date care stochează un singur caracter). Fiecărui caracter din String îi este asociată o poziţie (sau index). Numărătoarea poziţiilor începe de la 0. Astfel, şirul "JAVA" conţine 4 caractere care au următorii indecşi:

  • J = 0
  • A = 1
  • V = 2
  • A = 3

Deci, pentru un şir de 4 caractere, poziţiile lor vor fi notate de la 0 la 3. Pentru generalizare:

  • lungime = n
  • poziţie minimă = 0
  • poziţie maximă = n-1

Metode

String este o clasă, deci conţine o serie de metode care ajută la aflarea informaţiilor şi generarea de noi şiruri de caractere pe baza şirului deja existent.

Accesaţi documentaţia clasei String. În locul cifrei 8 din cadrul link-ului puteți tasta 6 sau 5 pentru a vedea paginile pentru versiunile mai vechi de Java.

Daţi click pe Frame pentru a vedea toate clasele. Nu vă speriaţi. Nu trebuie să ştim decât câteva.

Coloana din stânga arată return type -ul (tipul datelor rezultate din apelarea respectivelor metode).

De exemplu:

  • .charAt(int index) returnează char-ul de la indexul respectiv
  • .concat(String str) returnează stringul rezultat din concatenarea a două stringuri
  • .equals(Object object) returnează un boolean (true sau false)
  • .getChars(..) nu returnează nimic (void).
  • .indexOf(int ch) returnează un int (indexul) unui caracter din şir. Acesta poate fi dat între apostroafe şi corespunde tipului de date char.

Şirurile de caractere nu se compară folosind operatorul ==. Chiar dacă în unele situații funcționează, pentru a compara două string-uri se va folosi metoda .equals(String str).

Valorile returnate de metode pot fi reţinute în variabile de tip corespunzător sau pot fi afişate direct. Dacă tipul returnat este void, atunci nu le putem folosi ca valori, ci doar le apelăm. Mai multe informații despre metode şi tipul lor găsești în lecția următoare!

// Exemplu utilizare metode
String sir = "Ana are mere";
System.out.println("Lungimea sirului este: " + sir.length());
System.out.println("Primul caracter din sir este: " + sir.charAt(0));

Exerciţii

1. Se citeşte de la tastatură un şir de caractere. Să se găsească o metodă care returnează lungimea acestuia şi să se afişeze.

Soluţie

Soluţie

import java.util.Scanner;

class Lungime {

    public static void main (String[] args) {

    	Scanner sc = new Scanner(System.in);
    	
    	System.out.println("Introduceti un sir de caractere");
        String sir = sc.next();
        
        int lungime = sir.length();
        System.out.println("Sirul \"" + sir + "\" are lungimea de " + lungime + " caractere");
      
    }
}


2. Să se citească un şir de caractere de la tastatură. Să se afişeze caracterul de pe prima poziţie şi de pe ultima poziţie.

Soluţie

Soluţie

import java.util.Scanner;

class Caractere {

    public static void main (String[] args) {

    	Scanner sc = new Scanner(System.in);
    	
    	System.out.println("Introduceti un sir de caractere");
        String sir = sc.next();
        
        char primul = sir.charAt(0);
        char ultim = sir.charAt(sir.length() - 1);
        System.out.println("Primul caracter este " + primul + ", iar ultimul " + ultim);
        
    }
}


3. Se citeşte un şir de caractere de la tastatură. Să se afişeze indexul caracterului 'a'. Ce se va afişa dacă şirul introdus nu conţine caracterul 'a'?

Soluţie

Soluţie

import java.util.Scanner;

class Indexes {

    public static void main (String[] args) {

    	Scanner sc = new Scanner(System.in);
    	
    	System.out.println("Introduceti un sir de caractere");
        String sir = sc.next();
        
        int index = sir.indexOf('a');
        System.out.println("Indexul lui 'a' este " + index);
        
    }
}


4. Să se concateneze 2 şiruri de caractere citite de la tastatură şi să se afişeze rezultatul. Ce opţiuni aveţi?

Soluţie

Soluţie

import java.util.Scanner;

class Concatenare {

    public static void main (String[] args) {

    	Scanner sc = new Scanner(System.in);
    	
    	System.out.println("Introduceti un sir de caractere");
        String sir = sc.next();
        System.out.println("Introduceti alt sir de caractere");
        String sir2 = sc.next();
        
        // prima modalitate de a concatena 2 siruri de caractere
        String sConcat = sir + sir2;
        System.out.println("Sirul concatenat este " + sConcat);
        
        // a doua modalitate de a concatena 2 siruri de caractere
        String sConcatMetoda = sir.concat(sir2);
        System.out.println("Sirul concatenat cu metoda este " + sConcatMetoda);
        
    }
}


5. Se citesc 2 şiruri de caractere de la tastatură. Să se afişeze dacă acestea sunt sau nu egale.

Soluţie

Soluţie

import java.util.Scanner;

class Egalitati {

    public static void main (String[] args) {

    	Scanner sc = new Scanner(System.in);
    	
    	System.out.println("Introduceti un sir de caractere");
        String sir = sc.next();
        System.out.println("Introduceti alt sir de caractere");
        String sir2 = sc.next();
        
        boolean suntEgale = sir.equals(sir2);
        System.out.println(suntEgale);
        
    }
}


Discussion

, 2016/05/07 15:51

Exista o problema la Exercitiul 1:

Daca folosim next() o sa ne salveze decat primul cuvant din string, practic din "Ana are mere" ramanem cu "Ana" si se face count doar pe primul cuvant.

Trebuie sa folosim nextLine() pentru a ne salva intregul sir.

import java.util.Scanner;
public class StringExercitiu1 {
public static void main(String[] args) {
	Scanner sca = new Scanner(System.in);
        System.out.println("Scrie ce vrei tu aici :");
	String SirCaractere = sca.nextLine();
	System.out.println("Ceea ce ai scris tu are " + SirCaractere.length() + " caractere");
  }
}

Aceeasi problem este si la Exercitiul 5:

Daca folosim next(), dupa primul sir are mai mult de un cuvant, o sa se faca automat compararea intre primele 2 cuvinte.

Ex : "Ana Ana are mere" - Dupa ce dai enter o sa faca comparatia intre Ana si Ana si iti zice false; nu o sa te lase sa introduci al doilea sir.

Merge daca folosim nextLine().

You could leave a comment if you were logged in.