webentwicklung-frage-antwort-db.com.de

Java-Programm zum Testen, ob ein Zeichen in Groß-/Kleinschreibung/Zahl/Vokal steht

Wie kann ich, wie gesagt, testen, ob das eingegebene Zeichen einer der Parameter ist? Ich habe diesen Code geschrieben, aber er scheint nicht sehr gut (oder überhaupt nicht) zu laufen, jedoch keine Fehler. Außerdem muss ich den Basiscode verwenden, den ich hier verwendet habe. Es ist für die Schule und wir verlieren Punkte, wenn wir Dinge verwenden, die sie uns nicht beigebracht haben (verdammte Schule). 

class doody
 {
  public static void main(String[] args)
  { char i;
    char input='D';

    for(i='A';i<='Z';i++)//check if uppercase
    {
        if(input==i){
            System.out.println("Uppercase");
            switch(input){
            case 'A':
            case 'E':
            case 'I':
            case 'O':
            case 'U':
                System.out.println("Vowel"); break;
            default: System.out.println("Not a vowel"); break;}
            }

        for(i='a';i<='z';i++)//check if lowercase
        {
            if(input==i){
                System.out.println("Lowercase");
                switch(input){
                case 'a':
                case 'e':
                case 'i':
                case 'o':
                case 'u':
                System.out.println("Vowel"); break;
                default: System.out.println("Not a vowel"); break;
                }}


        for(i='0';i<='9';i++)//check if number
        {
            if(input==i)
                System.out.println("Number");
        }

    }

}}}

Edit: Hier ist ein Code, den ich heute zusammengeworfen habe. Viel einfacher Ich weiß nicht, warum mir das früher nicht aufgefallen ist. Es war wahrscheinlich, weil ich angeschlagen war, es war spät.

class doody
{
 public static void main(String[] args)
 {  
    char input='$';//input here.

    boolean lorn=false;
    if(input>='a'&&input<='z')
        {System.out.println("Lowercase");
            lorn=true;
        if(input=='a')System.out.println("Vowel.");
        if(input=='e')System.out.println("Vowel.");
        if(input=='i')System.out.println("Vowel.");
        if(input=='o')System.out.println("Vowel.");
        if(input=='u')System.out.println("Vowel.");
        }

    if(input>='A'&&input<='Z')
        {System.out.println("Uppercase");
            lorn=true;
        if(input=='A')System.out.println("Vowel.");
        if(input=='E')System.out.println("Vowel.");
        if(input=='I')System.out.println("Vowel.");
        if(input=='O')System.out.println("Vowel.");
        if(input=='U')System.out.println("Vowel.");
        }

    if(input>='0'&&input<='9')
        {
            lorn=true;
            System.out.println("Number");
        }

    if(lorn==false)System.out.println("It is a special character");
 }
}
8
Prnth

Sie benötigen keine for-Schleife in Ihrem Code.

So können Sie Ihre Methode erneut implementieren

  • Wenn die Eingabe zwischen 'A' und 'Z' steht, wird der Großbuchstabe verwendet
  • Wenn die Eingabe zwischen 'a' und 'z' ist, wird das Kleinbuchstabe verwendet
  • Wenn der Eingang eines von 'a, e, i, o, u, A, E, I, O, U' ist, ist sein Vokal
  • Sonst Konsonant

Bearbeiten:

Hier ist ein Hinweis, wie Sie fortfahren können. Das folgende Code-Snippet gibt int-Werte für chars

System.out.println("a="+(int)'a');
System.out.println("z="+(int)'z');
System.out.println("A="+(int)'A');
System.out.println("Z="+(int)'Z');

Ausgabe

a=97
z=122
A=65
Z=90

So können Sie prüfen, ob eine Zahl x zwischen zwei Zahlen existiert, z. B. a und b

// x greater than or equal to a and x less than or equal to b
if ( x >= a && x <= b ) 

Bei Vergleichen kann chars als Zahlen behandelt werden

Wenn du diese Hinweise kombinieren kannst, solltest du finden können, was du willst;)

11
Prashant Bhate

Wenn es keine Hausaufgaben wären, könnten Sie vorhandene Methoden wie Character.isDigit(char), Character.isUpperCase(char) und Character.isLowerCase(char) verwenden, die etwas "intelligenter" sind, da sie nicht nur in ASCII, sondern auch in verschiedenen Zeichensätzen arbeiten.

static final char[] VOWELS = { 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U' };

static boolean isVowel(char ch) {
    for (char vowel : VOWELS) {
        if (vowel == ch) {
            return true;
        }
    }
    return false;
}

static boolean isDigit(char ch) {
    return ch >= '0' && ch <= '9';
}

static boolean isLowerCase(char ch) {
    return ch >= 'a' && ch <= 'z';
}

static boolean isUpperCase(char ch) {
    return ch >= 'A' && ch <= 'Z';
}
11
Natix

In Java: Die Zeichenklasse verfügt über eine statische Methode namens isLowerCase (Char ch) und isUpperCase (Char ch). Character.isDigit (Char ch) gibt Ihnen einen booleschen Wert

beispiel: 

String abc = "HomePage";

char ch = abc.charAt(i); // here i= 1,2,3......

if(Character.isLowerCase(ch))
{
   // do something :  ch is in lower case
}

if(Character.isUpperCase(ch))
{
   // do something : ch is in Upper case
}

if(Character.isDigit(ch))
{
  // do something : ch is in Number / Digit
}
5
Chetan Bhoyar

Einige Kommentare zu Ihrem Code

  • warum sollten Sie 2 for-Schleifen wie for(i='A';i<='Z';i++) haben, wenn Sie dies mit einer einfachen if-Anweisung überprüfen können ... Sie eine Schleife über einen ganzen Bereich legen, während Sie einfach prüfen können, ob sie in diesem Bereich enthalten ist
  • selbst wenn Sie Ihre Antwort gefunden haben (zum Beispiel, wenn die Eingabe A ist, erhalten Sie Ihr Ergebnis, wenn Sie die erste Schleife zum ersten Mal betreten), führen Sie immer noch den Rest durch
  • ihre System.out.println("Lowercase");-Anweisung (und die Großbuchstaben-Anweisung) werden in die falsche Schleife eingefügt
  • Wenn Sie es verwenden dürfen, schlage ich vor, die Character-Klasse zu betrachten, die z. B. die Methoden Nice isUpperCase und isLowerCase enthält

Den Rest überlasse ich Ihnen, da es Hausaufgaben sind

2
Robin

Sie scheinen Groß- und Kleinschreibung von vorne nach hinten zu haben. A-Z wäre höher, a-Z wäre niedriger. Das ist zwar nicht gerade effizient - mit der invertierten Fallausnahme sollte es meiner Meinung nach korrekt ausgegeben werden.

0
Dan Hardiker

Dies ist Ihre Hausaufgabe, also nehme ich an, Sie MÜSSEN die Schleifen verwenden und Statements wechseln. Das ist OK, aber warum sind all Ihre Schleifen den Privaten zu eigen?

Bringen Sie sie einfach auf die gleiche Ebene und Ihr Code ist in Ordnung! (Teil zur Low/Up-Mischung).

Ein Tipp: Das Drücken von "Enter" und "Space" ist kostenlos! .__ (Dies ist das erste, was ich mit Ihrem Code gemacht habe, und das Problem wurde sehr trivial).

0
222
 Char input;

 if (input.matches("^[a-zA-Z]+$")) 
 {
     if (Character.isLowerCase(input))
     {
        // lowercase
     } 
     else
     { 
        // uppercase
     }

     if (input.matches("[^aeiouAEIOU]"))
     {
          // vowel
     }
     else 
     {
         // consonant
     }
 }
 else if (input.matches("^(0|[1-9][0-9]*)$"))
 {
       // number
 }
 else
 {
     // invalid
 }
0
d.moncada

Das ist vielleicht nicht das, wonach Sie suchen, aber ich dachte, Sie sollten den wirklichen Weg kennen, dies zu tun. Sie können die isUpperCase()-Klasse der Java.lang.Character-Klasse verwenden, um etwas über den Fall des Zeichens herauszufinden. Sie können isDigit() verwenden, um zwischen den Zahlen und Buchstaben zu unterscheiden (Dies ist nur zur Information :)). Sie können dann eine toUpperCase() ausführen und dann die Vokale wechseln. Dies verbessert die Codequalität.

0
MozenRath