2013-11-26 3 views
1

Я пытаюсь создать программу, которая подскажет мне, что аргумент char, который я вводил в аргументы, имеет прописную или строчную регистрацию или цифру от 0 до 9 или другой! У меня возникли ошибки в своем коде:Char Tester в java (верхний регистр AZ, нижний регистр az, цифра 0-9, другой)

public class CharsTester { 


    public static void main(String[] args) { 


     char input; 

     if (input.matches("^[a-zA-Z]+$")) 
     { 
      if (Character.isLowerCase(input)) 
      { 
       System.out.println("lower"); 
      } 
      else 
      { 
       System.out.println("upper"); 
      } 
     } 
     else if (input.matches("^(0|[1-9][0-9]*)$")) 
     { 
      System.out.println("digit"); 
     } 
     else 
     { 
      System.out.println("other"); 
     } 
    } 
} 
+0

Какие ошибки? Чем больше информации вы предоставляете, тем лучше и быстрее мы все можем вам помочь. – ajp15243

+0

Stacktrace или excaption? – Areo

+0

Вы не можете вызывать метод 'matches()' на примитивном типе типа char, поскольку он не является объектом. –

ответ

0

Try:

for (String arg : args) { 
    if (arg.matches("^[A-Z]+$")) { 
     System.out.println("uppercase"); 
    } else if (arg.matches("^[a-z]+$")) { 
     System.out.println("lowercase"); 
    } else if (arg.matches("^[0-9]+$")) { 
     System.out.println("digits"); 
    } else { 
     System.out.println("other"); 
    } 
} 
+0

все еще такая же ошибка –

+0

отредактировал и исправил ее - я думаю, вы хотите разобрать все аргументы программы. –

+0

Просто запустите мой код, и если это то, что вы хотели, отметьте это как правильный ответ. Если вы хотите что-то другое, будьте более конкретными, что вам нужно. –

3

Изменить тип ввода

String input;// Change char to String 

if (input.matches("[a-zA-Z]+")) // Remove^and $ 
           // String.matches don't need symbol^$ 

Чтобы проверить char вам не нужно String#matches,

char input=' '; 

    if (Character.isLowerCase(input) || Character.isUpperCase(input)) { 
     if (Character.isLowerCase(input)) { 
      System.out.println("lower"); 
     } else { 
      System.out.println("upper"); 
     } 
    } else if (Character.isDigit(input)) { 
     System.out.println("digit"); 
    } else { 
     System.out.println("other"); 
    } 
+0

Ошибка: Метод isLowerCase (char) в типе Character не применим для аргументов (String) –

+0

@JohnMarkSaad Просто выполните 'Character.isLowerCase (input.charAt (0))'. –

+0

@JohnMarkSaad, Что вы хотите проверить? Если вы хотите проверить символ, чем совпадают? – Masudul

0

Сначала вы должны изменить char на String и инициализировать его.

Затем вы можете переписать код, как этот

public static void main(String[] args) { 

    String input = ...; // initialize it 

    if (input.matches("[a-z]+")) { 
     System.out.println("lower"); 
    } else if (input.matches("[A-Z]+")){ 
     System.out.println("upper"); 
    }else if (input.matches("^(0|[1-9][0-9]*)$")) { 
     System.out.println("digit"); 
    } else { 
     System.out.println("other"); 
    } 
} 
0

Если ваш вклад в то, один символ, то вам не нужно регулярное выражение, а просто набор нескольких тестов.

char input = 'z';// example character 

if (Character.isLowerCase(input)) { 
    System.out.println("lower"); 
} else if (Character.isUpperCase(input)) { 
    System.out.println("upper"); 
} else if (Character.isDigit(input)) { 
    System.out.println("digit"); 
} else { 
    System.out.println("something is not right :/"); 
} 
0

Regex группы Решение:

Pattern p = Pattern.compile("([a-z])|([A-Z])|([\\d])"); 
Matcher m = p.matcher("" + x); 
m.matches(); 
if (m.group(1)!=null) 
{ 
    System.out.println("lower"); 
} 
else if (m.group(2)!=null) 
{ 
    System.out.println("upper"); 
} 
else if (m.group(3)!=null) 
{ 
    System.out.println("digit"); 
} else 
{ 
    System.out.println("other"); 
}  
0
you can convert String to char array, and then individual char with ascii value as below:- 


public class CharsTester { 


    public static void main(String[] args) { 


     String input="ASD123asd_-"; 
     char temp[]=input.toCharArray(); 
     for (int i=0;i<temp.length;i++) 
     { 
      if(temp[i] >47 && temp[i]<58) 
      { 
       System.out.println(temp[i]+": is digit"); 
      } 
      else if(temp[i] >64 && temp[i]<91) 
      { 
       System.out.println(temp[i]+": is CAPS char"); 
      } 
      else if(temp[i] >96 && temp[i]<123) 
      { 
       System.out.println(temp[i]+": is small char"); 
      } 
      else 
       System.out.println(temp[i]+"is symbol or spetial char"); 

     } 

    } 
}