好的家伙所以我正在使用这个字符串函数“charAT”来存储charater变量以存储在char r中。但我们知道用户可以输入任何内容。当用户输入数字值(如123或5)或charAt将其存储在char变量r中时。应该有例外,但事实并非如此。 char变量如何能够保存数值。我怎样才能解决这个问题?我希望“r”只保存char值,并希望在用户输入数值时发生异常。
#sudo docker run -i \
sudo docker run --detach \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://192.168.56.101/'; gitlab_rails['lfs_enabled'] = true;" \
--hostname ubse-gitlab \
--publish 443:443 --publish 80:80 --publish 23:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
--volume /srv/gitlab/logs/reconfigure:/var/log/gitlab/reconfigure \
gitlab/gitlab-ce:9.5.4-ce.0
答案 0 :(得分:1)
在Java中,String
和char
的值也可以接受数值。因此,如果输入123作为输入,那么字符串将是" 123"并且char将是1
。如果您只想将字母表作为输入,那么您可以使用hasNext
Java类中的Scanner
方法来完成它。这将使用Regular Expression
等[A-Za-z]
来确保只能输入字母。
while(true)
{
try
{
System.out.println("Please enter the grade");
while (!s1.hasNext("[A-Za-z]+")) {
System.out.println("you have entered an invalid input. Please try again \n");
s1.next();
}
str = s1.next();
r = str.charAt(0);
System.out.println("The grade is "+ r);
break;
}
catch (Exception e)
{
System.out.println("There was an exception \n");
}
}
答案 1 :(得分:0)
听起来你需要测试角色是否属于某个ASCII范围:
ascii = (int) str.toLowerCase().charAt(0);
if ( ( ascii >= (int) 'a' ) && ( ascii <= (int) 'f' ) ) {
// Valid!
} else {
// Invalid!
}