Java zamiana wielkosci liter prosty przykład

0

Użytkownik podaje swoje imię i nazwisko, program odczytuje je poprawnie, tzn. np. użytkownik: JAn koWALski, komputer: Jan Kowalski. Udało mi się stworzyć coś takiego:

import java.util.Scanner;

public class CzytanieZKlawiatury {
    
    public static void main(String[] args) {
                       
        Scanner sc = new Scanner(System.in);
        
        System.out.print("Podaj imie: ");
        String imie = sc.next();
        System.out.print("Podaj nazwisko: ");
        String nazwisko = sc.next();
        
        char a=(imie.toUpperCase().charAt(0));
        char b=(nazwisko.toUpperCase().charAt(0));
        System.out.println("Nazywasz się: "+a+imie.toLowerCase()+" "+b+nazwisko.toLowerCase());

        sc.close();

    }
    
}

Komputer odczytuje Jjan Kkowalski.
Jak to poprawić?

1

imie = imie.toUpperCase();//ta funkcja zwraca nowego stringa, nie potrzebnie czarujesz (używasz char)

1
String name = "JaN";
String newName = name.substring(0, 1).toUpperCase() + name.toLowerCase().substring(1);

Najpierw całe imię zmieniasz na wielkie litery, a później pobierasz tylko pierwsza listerę dodając później do niej całe imię zmienione na małe litery dlatego otrzymujesz taki rezultat. W przykładzie który podałem pobierana jest pierwsza litera imienia i zmieniana jest na dużą, a następnie dodawana jest pozostała część imienia z pominięciem pierwszej litery (substring(1) - weź wszystkie litery od 1, bo numeracja liter zaczyna się od 0).

1 użytkowników online, w tym zalogowanych: 0, gości: 1