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");
}
}
Sie benötigen keine for-Schleife in Ihrem Code.
So können Sie Ihre Methode erneut implementieren
Bearbeiten:
Hier ist ein Hinweis, wie Sie fortfahren können. Das folgende Code-Snippet gibt int
-Werte für char
s
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 char
s als Zahlen behandelt werden
Wenn du diese Hinweise kombinieren kannst, solltest du finden können, was du willst;)
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';
}
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
}
Einige Kommentare zu Ihrem Code
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 istA
ist, erhalten Sie Ihr Ergebnis, wenn Sie die erste Schleife zum ersten Mal betreten), führen Sie immer noch den Rest durchSystem.out.println("Lowercase");
-Anweisung (und die Großbuchstaben-Anweisung) werden in die falsche Schleife eingefügtCharacter
-Klasse zu betrachten, die z. B. die Methoden Nice isUpperCase
und isLowerCase
enthältDen Rest überlasse ich Ihnen, da es Hausaufgaben sind
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.
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).
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
}
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.