2017-04-15 202 views
3

我必须验证课程代码的用户输入。代码必须是:验证用户输入

  • 前3个字符的长度是大写字母
  • 最后四个是1000和9999
  • 没有空格也不符号之间的数值。

到目前为止,我有这样的事情:

var inputMessage = "Please enter valid course code"; 
var userInput = " "; 

userInput = prompt (inputMessage); 

while (userInput.length !=7 || userInput.slice(-4)<1000 || userInput.slice(-4)>9999) 
{ 
    alert ("Invalid Course Code. Please try again"); 
    userInput = prompt(inputMessage); 
} 

任何帮助将是巨大的。我正在努力与阿尔法+没有空格/符号。

+0

哎看来上面的代码没有用Java编写的 “VAR inputmessagge =””“不是允许。insted use String –

+0

你提到Java,但看起来你正在写javascript? – adamM

回答

2

下面的例子将帮助你在Java中做到这一点。

import java.util.Scanner; 
import java.util.regex.Pattern; 

public class RegexSample { 

    public static boolean checkPass(String s) { 
     Pattern p = Pattern.compile("[A-Z]{3}[0-9]{4}"); 
     return p.matcher(s).find(); 
    } 

    public static void main(String[] args) { 
     String inputMessage = "Please enter valid course code"; 
     String userInput = " "; 
     Scanner input = new Scanner(System.in); 
     System.out.println(inputMessage); 
     userInput = input.nextLine(); 

     while (userInput.length() != 7 || !checkPass(userInput)) { 

      System.out.println("Invalid Course Code. Please try again"); 
      userInput = input.nextLine(); 
     } 

     System.out.println("Input Validated"); 

    } 

} 
0

首先,你明显没有使用Java,因为“var”和String.slice()。但是这个建议仍然适用。

我会采取两种方法。有趣的方式,以及你的教授希望你这样做的方式。

有趣的方法是使用正则表达式来验证它是否匹配。我建议使用这个网站来解决这个问题:http://regexr.com/

你的教授可能希望你这样做的方式是遍历它一次一个字符,并检查是否每个字符是它应该给它的东西位置。

也可能有一些JavaScript的东西,你可以做更容易做到这一点,但我不能帮你。

0

这看起来是Javascript而不是Java。我决定调整你的程序,按照你提供的4条规则工作。它看起来差不多完成了,只是缺少了一些验证。当你想要确认你在圆括号内传递了两个参数时 - 第一个也是最后一个你想“切分”你的字符串的地方。

下面是Javascript代码:

function isUpperCase(str) { 
 
    return str === str.toUpperCase(); 
 
} 
 

 
function isInteger(value) { 
 
    return /^\d+$/.test(value); 
 
} 
 

 
var inputMessage = "Please enter valid course code"; 
 
var userInput = ""; 
 
userInput = prompt (inputMessage); 
 

 
while (
 
    userInput.length !=7     || //length 
 
    !isUpperCase(userInput.slice(0,3)) || //first 3 UpperCase 
 
    !isInteger(userInput.slice(3,7))  || //last 4 is integer 
 
    userInput.slice(3,7)<1000   || //last 4 is at least 1000 
 
    userInput.slice(3,7)>9999   || //last 4 is maximum 9999 
 
    userInput.match(/[^A-Za-z0-9\-_]/)  //no space/spec chars 
 
) 
 
{ 
 
alert ("Invalid Course Code. Please try again"); 
 
userInput = prompt(inputMessage); 
 
}

因为你已经可能知道,while循环检查用户的错误,所以大部分的验证是相反的。创建一个检查大写和整数的函数。一些研究发现了一些很好的正则表达式的工作。

希望这会有所帮助。