wie chars mit einer menge von chars vergleichen

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hi,

ich möchte einen char mit einer menge von chars vergleichen.
umständlich könnte ich das natürlich mit jedem einzelnen und dem ==-operator machen, aber da muss es doch was einfaches geben.

quasi so:

if (ref_char in (A,B,C)){
System.out.println("toll!");
}
 
Nein. In Java gibt es nicht den Typ Set of ... (Menge von...) wie in Pascal 🙁

Also mußt du schlußendlich dein char mit jedem einzelnen char deiner Menge
vergleichen. Es sei denn, du kannst dich auf die ASCII-Codierung beziehen:

Code:
boolean istKleinerLateinischerBuchstabe = 'a' <= myChar && myChar <= 'z';
 
Hehe,

jaja das waren noch Zeiten, als

Code:
if ch in ['a'..'z'] then Writeln("kleiner Buchstabe");

funktionierte 😉

bye Saxony
 
Tja... Groovy ist toll 😀

Code:
if (('a'..'z').contains(ch)) {
  System.out.println ("kleiner Buchstabe");
}
 
Wenn du schon von "Mengen" redest klingt das ein bißchen nach
if (new HashSet(Arrays.asList('a','b','x','y')).contains('x'))
aber das ist SEHR SEHR ineffizient (genau wie die oeben angesprochen Sprachen, in denen solche Sachen so schön einfach gehen :wink: ), darum solltest du genauer beschreiben, was du erreichen willst.
 
Auch nicht besser: Man könnte aus dem char-Array einen String machen und dann geeignete Methoden der Klasse String verwenden. Vorausgesetzt jeder char kommt nur einmal vor.
 
Wenn nicht mehr gefordert ist, als das was du beschreibst könnte man es so lösen:

Code:
String sMenge = new String(deinchar[]);
if (sMenge.indexOf(zu_suchender_char) > -1) {
    System.out.println("gefunden");
}

Ich wage jetzt jedoch zu behaupten, dass das am Ende auch nicht schneller ist, wie wenn du die Chars einzeln vergleichst.
 
hättest du kein char-array sondern eben ein character-hashset, dann wäre das auch ziemlich einfach zu lösen.

vielleicht bringt das ja was

hab keine ahnung ob das einfacher geht:
Code:
Set<Character> AtoZsmall = new HashSet<Character>();

for(int i = 97; i<123; i++)
{
	AtoZsmall.add(Character.valueOf((char) i));
}

if(AtoZsmall.contains(Character.valueOf('h')))
{
	System.out.println("gefunden");
}
else
{
	System.out.println("nicht gefunden");
}


funktioniert auf jeden fall, und du musst das set auch nur einmal erstellen.

hoffentlich hilfts was 😉
 
Code:
char deinChar = 'a';
int temp = Character.getNumericValue(deinChar);

if(temp>9 && temp<36 && Character.isLowerCase(deinChar))
{
   System.out.println("gefunden");
}
else
{
   System.out.println("nicht gefunden");
}

oder für große buchstaben:
Code:
char deinChar = 'a';
int temp = Character.getNumericValue(deinChar);

if(temp>9 && temp<36 && Character.isUpperCase(deinChar))
{
   System.out.println("gefunden");
}
else
{
   System.out.println("nicht gefunden");
}

geht natürlich auch, sogar ganz ohne hashset
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben