2012-01-22 17 views
6

Daha önce de söylediğim gibi, girilen karakterin parametrelerden biri olup olmadığını nasıl sınayabilirim? Bu kodu yazdım ama çok iyi (ya da hiç) hata yapmıyor gibi görünüyor. Ayrıca, burada kullandığım temel kodu kullanmam gerekiyor. Okul için ve bize öğretmedikleri şeyleri kullanırsak puan kaybederiz (sevgili okul).Java Bir karakter büyük/küçük harf/sayı/sesli harf olup olmadığını sınamak için Program

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"); 
     } 

    } 

}}} 

Düzenleme: İşte bugün bir araya getirdiğim bir kod. Çok daha basit. Bunun neden daha önce başıma gelmediğini bilmiyorum. Muhtemelen ben çok yorgundum, geç kalmış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"); 
} 
} 
+2

Bir seferde tümünden ziyade bir kerede bu görevin bir bölümünü çözmeye çalışmalısınız. Daha küçük parçalara ayırın ve küçük soruları çözün. Sonra belirli bir alt noktada sıkışırsanız, size daha iyi yardımcı olacağız. ** Edit **: kullanıcı karakteri nereye giriyor? –

+3

Büyük ve küçük harfleri karıştırıyorsunuz. Büyük harf A-Z, küçük harf a-z'dir. – Arjan

+2

Kodunuzun okunması çok zor çünkü doğru girintili değil. Her satıra sadece bir '' 'koyun. –

cevap

0

Önde ve büyük harflerin öne doğru olduğu anlaşılıyor. A-Z üst, a-z daha düşük olurdu. Tam olarak verimli olmasa da - tersine çevrilmiş durum istisnası ile, doğru şekilde çıkması gerektiğini düşünüyorum.

10

Kodunuzda for döngüsüne ihtiyacınız yoktur. İşte

giriş 'A' ve 'Z' onun büyük harf arasında ise senin yöntem

  • uygulamak yeniden nasıl olduğunu
  • girdi 'a' ve 'z' onun küçük arasındaysa
  • giriş
  • Başka Sessiz 'a, e, i, O, U, A, e, I, O, U' da sesli harf biriyse

Düzenleme: İşte

pasajı 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'); 

Çıktı için int değerleri verir kod takiben devam etmek için ipucu vardır İşte

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

kontrol edebilirsiniz nasıl iki sayı arasında x numarası varsa a vedeyin karşılaştırmalar sırasında

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

char sayıyla

Bu ipuçlarını birleştirebilirsiniz varsa, ne istediğinizi bulmak mümkün olması gerektiği gibi tedavi edilebilir; kodunuzu)

+0

A ile Z arasında olup olmadığını nasıl test ederim? Ben bir Java noob'um, görüyorsun. – Prnth

+0

Zaten bunu yaptınız: 'için (i = 'A'; i <= 'Z''.“A” ile başlıyorum ve döngü, Z'den daha düşük (veya eşit) iken devam eder. –

+0

@JB Neden onu karıştırmak ve onun yaklaşımını sürdürmek istemediğini anlayabiliyorum, ama yeni başlayanlara bariz problemlerini anlatmalı ve onlara daha iyi çözümler sunmalıyız. [For-anti desen] (http://blogs.msdn.com/b/oldnewthing/archive/2011/12/27/10251210.aspx) yeni başlayanların alışması gereken bir şey değildir. – Voo

2

Bazı yorumlarınızı

  • for(i='A';i<='Z';i++) gibi döngülere neden sahip olmak istiyorsanız, bunu basit bir if deyimiyle kontrol edebilirsiniz ...bir aralığın üstesinden geçerken, cevabınızı bulduğunuzda bile (A girişiniz ilk döngüye ilk girdiğinizde sonuca sahip olacaksınız)
  • aralığından kontrol edilip edilmediğini kontrol edebilirsiniz. kullanmaya izin verilirse her şey
  • sizin System.out.println("Lowercase"); deyimi (ve büyük harf açıklamada) üzerinden döngü yanlış döngü
  • yerleştirilir, ben güzel örnek isUpperCase ve isLowerCase için vardır Character sınıfa bakmak önermek yöntemler

ev ödevi olduğundan beri size dinlenin

+0

Bir aralıkta olup olmadığını nasıl test ederim? Bunlardan birini kullanmam gerekiyor mu? "Sistem yanlış döngüde" şey için teşekkürler. Bunu şimdi tamir edeceğim. – Prnth

0

Bu sizin aradığınız şey olmayabilir ama bunu yapmanın gerçek yolunu bilmeniz gerektiğini düşündüm. Karakterin durumu hakkında bilgi edinmek için java.lang.Character sınıfının isUpperCase() numarasını kullanabilirsiniz. Sayılar ve harfler arasında ayrım yapmak için isDigit()'u kullanabilirsiniz (Bu sadece FYI :)). Daha sonra bir toUpperCase() yapabilir ve daha sonra ünlüler için geçiş yapabilirsiniz. Bu kod kalitesini artıracaktır.

+0

Bunu biliyorum, ancak okula öğretmedik. Öğretmenimizin bize öğrettiği şeylere bağlı kalmalıyız. Öğretmenlerin bize öğretmediği şeyleri yazmak için sınavlarda not yığınlarını kaybettim. – Prnth

+0

sonra büyük harf/küçük harf ve ünsüz/ünlülerin özelliklerini ayarlamak için 2 ayrı booleanlar kullanmanız gerektiğini düşünüyorum o zaman o booleanlar – MozenRath

0

Bu sizin ev ödevlerinizdir, bu yüzden döngüleri kullanmanız ve geçiş listelerini değiştirmeniz gerektiğini varsayıyorum. Bu O.K, ama tüm döngüleriniz neden özel olanlara dahil?

Sadece bunları "aynı" seviyeye çıkarın ve kodunuz gayet iyi! (alt/üst kareye kadar kısım).

İpucu: Fazla 'Enter'a basılması' & 'Space' boştur! (Ben kodunuzu yaptığı ilk şey, ve sorun çok önemsiz olmuştur) bir ödev olmasa

+0

üzerinde bir baskı yapın Harika bir fikir, iyi efendim. Şimdi yatmaya gidiyorum, geç burada, ama yarın okuldan döndüğümde burada çalışacağım ve güncel bir versiyonunu buraya koyacağım. – Prnth

9

, biraz "daha akıllı" olan böyle Character.isDigit(char), Character.isUpperCase(char) ve Character.isLowerCase(char) gibi mevcut yöntemleri kullanabilirsiniz Çünkü onlar sadece ASCII'de değil, aynı zamanda çeşitli karakter kümelerinde de çalışırlar.

Java'da
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'; 
} 
4

: Karakter sınıfı isLowerCase (Char ch) ans isUpperCase (Char ch) denilen statik yöntem vardır, Character.isDigit (Char ch) kolayca görevi elde edebilirsiniz bu konuda temel, size Boole değeri verir

örnek:

Dize 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 
} 
0
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 
} 
İlgili konular