2012-01-22 33 views
6

Như tôi đã nói, làm cách nào để kiểm tra xem ký tự được nhập có phải là một trong các tham số không? Tôi đã viết mã này, nhưng nó không có vẻ chạy rất tốt (hoặc ở tất cả), không có lỗi, tuy nhiên. Ngoài ra, tôi cần phải sử dụng mã cơ bản mà tôi đã sử dụng ở đây. Trường học của nó và chúng tôi mất điểm nếu chúng tôi sử dụng những thứ họ chưa dạy chúng tôi (trường học darn).Chương trình Java để kiểm tra xem ký tự là chữ hoa/chữ thường/số/nguyên âm

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

    } 

}}} 

Chỉnh sửa: Đây là một số mã tôi đã ném cùng nhau ngày hôm nay. Đơn giản hơn nhiều. Tôi không biết tại sao điều này không xảy ra với tôi trước đó. Có lẽ là vì tôi đã bị quấy rầy, đã muộn rồi.

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

Bạn nên cố gắng để giải quyết một phần của nhiệm vụ này tại một thời điểm chứ không phải là tất cả cùng một lúc. Chia nhỏ thành các phần nhỏ hơn và giải quyết từng câu hỏi nhỏ. Sau đó, nếu bạn gặp khó khăn tại một điểm phụ cụ thể, chúng tôi sẽ có thể trợ giúp bạn tốt hơn. ** Chỉnh sửa **: người dùng nhập ký tự vào đâu? –

+3

Bạn đang nhầm lẫn chữ hoa và chữ thường. Chữ hoa là A-Z, chữ thường là a-z. – Arjan

+2

Mã của bạn rất khó đọc vì nó không bị thụt lề một cách chính xác. Chỉ đặt một '}' trên mỗi dòng. –

Trả lời

0

Dường như bạn có chữ hoa và chữ thường ở mặt trước. A-Z sẽ cao hơn, a-z sẽ thấp hơn. Mặc dù không chính xác hiệu quả - với ngoại lệ trường hợp ngược, tôi nghĩ nó nên xuất chính xác.

10

Bạn không cần vòng lặp for trong mã của mình.

Đây là cách bạn có thể tái thực hiện phương pháp của bạn

  • Nếu đầu vào là giữa 'A' và 'Z' hoa của nó
  • Nếu đầu vào là giữa 'a' và 'z' chữ thường của nó
  • Nếu đầu vào là một trong những 'a, e, i, o, u, A, E, I, O, u' nguyên âm của nó
  • khác Phụ âm

Edit:

Dưới đây là gợi ý cho bạn để tiến hành, sau đoạn mã cho int giá trị cho 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'); 

Output

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

Đây là cách bạn có thể kiểm tra nếu một số x tồn tại giữa hai số, hãy nói ab

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

Trong so sánh char s có thể được coi là số

Nếu bạn có thể kết hợp những gợi ý, bạn sẽ có thể tìm thấy những gì bạn muốn;)

+0

Làm thế nào để kiểm tra nếu nó là giữa A và Z? Tôi là một noob Java, bạn thấy đấy. – Prnth

+0

Bạn đã làm điều đó: 'for (i = 'A'; i <= 'Z''.'i' bắt đầu bằng' A', và vòng lặp tiếp tục trong khi tôi thấp hơn (hoặc bằng) 'Z'. –

+0

@JB Tôi có thể hiểu tại sao bạn không muốn nhầm lẫn với anh ấy và tiếp tục với cách tiếp cận của anh ấy, nhưng tôi nghĩ chúng ta nên nói cho người mới bắt đầu những vấn đề rõ ràng của họ và cung cấp cho họ các giải pháp tốt hơn. [Mô hình chống forfor] (http://blogs.msdn.com/b/oldnewthing/archive/2011/12/27/10251210.aspx) không phải là một cái gì đó ngay cả người mới bắt đầu cũng nên quen. – Voo

2

Một số ý kiến ​​về mã của bạn

  • lý do bạn muốn có 2 cho các vòng như for(i='A';i<='Z';i++), nếu bạn có thể kiểm tra điều này bằng tuyên bố đơn giản if ...bạn lặp lại toàn bộ phạm vi trong khi bạn chỉ cần kiểm tra xem nó có nằm trong phạm vi đó
  • ngay cả khi bạn tìm thấy câu trả lời của mình (ví dụ: khi nhập là A bạn sẽ có kết quả khi lần đầu tiên bạn vào vòng đầu tiên) vòng lặp trên tất cả các phần còn lại
  • System.out.println("Lowercase"); tuyên bố của bạn (và báo cáo kết quả chữ hoa) được đặt trong vòng lặp sai
  • Nếu bạn được phép sử dụng nó, tôi đề nghị để xem xét các lớp Character trong đó có ví dụ đẹp isUpperCaseisLowerCase phương thức

Tôi rời khỏi phần còn lại cho bạn vì nó là bài tập về nhà

+0

Làm cách nào để kiểm tra xem nó có nằm trong phạm vi không? Tôi có cần phải sử dụng một trong những thứ đó ... mảng không? Cảm ơn điều "Hệ thống trong vòng lặp sai". Tôi sẽ sửa lỗi đó ngay bây giờ. – Prnth

0

Đây có thể không phải là những gì bạn đang tìm kiếm nhưng tôi nghĩ bạn biết cách thực sự để làm điều này. Bạn có thể sử dụng isUpperCase() của lớp java.lang.Character để tìm hiểu về trường hợp của nhân vật. Bạn có thể sử dụng isDigit() để phân biệt giữa các số và chữ cái (Đây chỉ là FYI :)). Sau đó, bạn có thể thực hiện toUpperCase() và sau đó thực hiện chuyển đổi cho nguyên âm. Điều này sẽ cải thiện chất lượng mã của bạn.

+0

Tôi biết điều đó, nhưng chúng tôi chưa được dạy ở trường. Chúng ta phải tuân theo những gì giáo viên đã dạy chúng ta. Tôi đã mất rất nhiều điểm trong các kỳ thi để viết những thứ mà giáo viên đã không dạy chúng tôi. – Prnth

+0

sau đó tôi nghĩ rằng bạn nên sử dụng 2 booleans riêng biệt để thiết lập các thuộc tính của chữ hoa/chữ thường và phụ âm/nguyên âm sau đó làm một bản in dựa trên những booleans – MozenRath

0

Đây là bài tập về nhà của bạn, vì vậy tôi giả sử bạn CẦN sử dụng vòng lặp và chuyển đổi các số liệu thống kê. Đó là O.K, nhưng tại sao tất cả các vòng của bạn lại là bên trong những cái bí mật?

Chỉ cần đưa chúng ra cùng "cấp" và mã của bạn là tốt! (một phần của mixup thấp/up).

Mẹo: Nhấn thêm 'Enter' & 'Không gian' là miễn phí! (Đó là điều đầu tiên tôi làm cho mã của bạn, và các vấn đề trở nên rất tầm thường)

+0

Ý tưởng tuyệt vời, tốt sir. Tôi sẽ đi ngủ ngay bây giờ, trễ ở đây, nhưng tôi sẽ làm việc ngay sau khi tôi trở lại trường vào ngày mai, và đặt một phiên bản cập nhật ở đây. – Prnth

9

Nếu nó không phải là một bài tập ở nhà, bạn có thể sử dụng các phương pháp hiện có như Character.isDigit(char), Character.isUpperCase(char)Character.isLowerCase(char) mà là một chút "thông minh hơn" , bởi vì chúng không chỉ hoạt động trong ASCII, mà còn hoạt động trong nhiều bộ ký tự khác nhau.

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

Trong Java: lớp nhân vật có phương pháp tĩnh gọi isLowerCase (Char ch) ans isUpperCase (Char ch), Character.isDigit (Char ch) mang đến cho bạn giá trị Boolean, căn cứ vào đó bạn có thể dễ dàng đạt được nhiệm vụ của bạn

ví dụ:

Chuỗi 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 
} 
Các vấn đề liên quan