Sprawdzanie, czy zmienna to String

0

Cześć. Zielony programista here.
Chcę nadać warunek, dla którego osiągnę true, gdy pod zmienną literka będzie String długości 1.
Czyli gdy będzie tam "a", "p", "G", to ma być true, a gdy "7", "bgfd", "]" itp. false. Na długość warunek mam, a na to bycie Stringiem?

if (literka.length()==1 & 
0

W przypadku Stringa mozesz spokojnie skorzystac z operatora instanceof, np.

Integer i1 = 1;
String s1 = "1";

System.out.println(i1 instanceof String); // false
System.out.println(s1 instanceof String); // true

EDIT:
Swoja droga - skoro wiesz, ze "literka" to String to po co Ci sprawdzenie typu?

0

Dzięki, niemniej jednak nie rozwiązuje to mojego problemu - spotkałem się już z tym podejściem, ale chyba za mało powiedziałem do czego mi to potrzebne. A zatem ma to sprawdzać, czy wprowadzono literkę do konsoli, i jeśli tak to ma wykonywać pewien warunek. No, ale nie wykonuje. Tzn. jak wpiszę "7" korzystając z tego, co napisałeś, to nie wyda "Spadaj.", tylko "Nie znaleziono grzyba na literkę 7."

package ssss;
import java.util.*; 
public class zzzz {
	static Scanner userInput = new Scanner(System.in);
	
	public static void main(String[] args)		    {
		System.out.print("Podaj literkę.\n");
		String literka = userInput.nextLine();

        if (literka instanceof String & literka.length()==1 & !(literka.equals("m"))) {
        System.out.print("Nie znaleziono grzyba na literkę " + literka + "."); }
        else if (literka.equals("m")) {
        System.out.print("Na literkę " + literka + " to muchomor."); }
        else {
		System.out.print(literka + "? Spadaj."); }
	}
}


		
1

Ok, czyli Tobie nie chodzi o to, czy cos jest Stringiem czy nie, ale czy znajdujace sie wewnatrz liczby nie ma numeru.

Najlepiej w takim razie sprawdzic, czy String jest dlugi na 1 znak i potem czy ten jedyny znak to litera, tj.

public void test(){
check("aa");
check("a");
check("7");
}

private void check(String s){
System.out.println(s != null && s.length() == 1 && Character.isAlphabetic(s.codePointAt(0)));
}

1

Ja bym tak proponował.

public class Test {

    static Scanner userInput = new Scanner(System.in);

    public static void main(String[] args) {
        System.out.println("Podaj literkę.");
        String literka = userInput.nextLine();
        checkLetter(literka);
    }

    static void checkLetter(String str) {
        if(!str.equals("m") && !checkIfNumber(str)) {
            System.out.println("Nie znaleziono grzyba na literkę "+ str);
        } else if (str.equals("m")) {
            System.out.print("Na literkę " + str + " to muchomor.");
        } else {
            System.out.print(str + "? Spadaj.");
        }
    }

    static boolean checkIfNumber(String number) {
        try {
            Integer.parseInt(number);
        } catch (NumberFormatException e) {
            return false;
        }
        return true;
    }
}

0

Ok, dziękuje wam, tak przy okazji jeszcze zapytam.

wartek01 napisał(a):

Ok, czyli Tobie nie chodzi o to, czy cos jest Stringiem czy nie, ale czy znajdujace sie wewnatrz liczby nie ma numeru.

Najlepiej w takim razie sprawdzic, czy String jest dlugi na 1 znak i potem czy ten jedyny znak to litera, tj.

public void test(){
check("aa");
check("a");
check("7");
}

private void check(String s){
System.out.println(s != null && s.length() == 1 && Character.isAlphabetic(s.codePointAt(0)));
}

Character.isAlphabetic(literka.codePointAt(0)

Rozumiem, że tutaj pierwszy znak ze zmiennej literka jest konwertowany na liczbę w tablicy ASCII decimal, i jeżeli wpada do zakresu, w którym znajdują się litery alfabetu, to wtedy zwracane jest true, tak? Czyli np. tablica znaków alfabetycznych z ASCII dec jest tu http://www.kerryr.net/pioneers/ascii2.htm, ale ta tablica jest tylko dla znaków alfabetu angielskiego, a mi np. 'ł' też interpretuje jako Alphabetics, bo dla tej funkcji 'wirtualna tablica znaków alfabetycznych' jest poszerzona, np. o polskie litery? Ale widzę, że nie tylko, "Ð" np. też mi zinterpretuje jako znak alfabetyczny.

0
amoroso napisał(a):

Rozumiem, że tutaj pierwszy znak ze zmiennej literka jest konwertowany na liczbę w tablicy ASCII decimal, i jeżeli wpada do zakresu, w którym znajdują się litery alfabetu, to wtedy zwracane jest true, tak? Czyli np. tablica znaków alfabetycznych z ASCII dec jest tu http://www.kerryr.net/pioneers/ascii2.htm, ale ta tablica jest tylko dla znaków alfabetu angielskiego, a mi np. 'ł' też interpretuje jako Alphabetics, bo dla tej funkcji 'wirtualna tablica znaków alfabetycznych' jest poszerzona, np. o polskie litery? Ale widzę, że nie tylko, "Ð" np. też mi zinterpretuje jako znak alfabetyczny.

Nie do końca. Zgodnie z informacją z Javadoc String.codePointAt:

Returns the character (Unicode code point) at the specified index.

Czyli nie ASCII tylko Unicode, który obsługuje polskie znaki.

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