2011-07-01 18 views
1

这是处理java启动。 我的目标是获取一个Vin数并将其存储到一个字符串中。确保它不超过9个字符。此外,Vin数字只能包含数字和字母a-z或A-Z。如果用户输入一个无效的Vin号码,它应该循环回来并提示输入新的Vin号码。我的问题是告诉字符串是否包含除整数或字母之外的任何内容。我已经看到了Utility.IsAlphaNumeric方法,但我无法弄清楚如何实现它或者它是否甚至是java方法。每当我尝试使用它时,NetBeans都会给我提供错误。检查字符串除了整数或字符a - z

private static String checkVin() { 
    Scanner input = new Scanner(System.in); 
    String vinNumber = ""; 
    do { 
     System.out.println("Please enter the vin number of the car"); 
     vinNumber = input.next(); 
     if (vinNumber.length() > 9) { 
      System.out.println("invalid input for Vin number"); 
     } 
     for (int i = 0; i < vinNumber.length(); i++) { 
      char currentCharacter = vinNumber.charAt(i); 

      if ((currentCharacter < '0' || currentCharacter > '9') 
        || !(currentCharacter < 'a' || currentCharacter > 'z') 
        || !(currentCharacter > 'A' || currentCharacter > 'Z')); 
      System.out.println("invalid input for Vin Number"); 
      break; 
     } 
     return vinNumber; 

    } while (true); 
} 

回答

10

Utility不是来自核心库的类的名称。

您可以

import java.util.regex.Pattern; 
import java.util.regex.Matcher; 

private static final Pattern VALID_VIN_NUMBER = Pattern.compile(
    "[0-9a-zA-Z]{1,9}"); 

public static boolean isVin(String s) { 
    return VALID_VIN_NUMBER.matcher(s).matches(); 
} 
0

更换整个检查循环最好的机制是使用正则表达式,以确保它匹配特定模式。请尝试:

vin != null && vin.matches([a-zA-Z0-9]{9})) 

这将确保vin字符串是一个9个字符的字符串,并且仅为字母数字。

1

没有时间久的答案,但

Pattern p = Pattern.compile("^[A-Za-z0-9]{0,9}$"); 
boolean matches = p.matcher(s).matches(); 

这是告诉它寻找

  • 字符串开始(^)
  • “任何数字或字母,小写([A-Za-z0-9])
  • “0至9个”({0,9})
  • 字符串结束($)
相关问题