我希望能够使用StringBuilder强制输入10个字符。我知道它可以设置为最大字符限制,但我可以将其设为10吗?
也许是这样的:
import java.util.Scanner;
public class Phonenumber
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
StringBuilder num = new StringBuilder(System.in);
System.out.println("What is your 10 digit phone number?");
num = input.nextStringBuilder();
while(!(num =(10 characters)) // I don't know how to phrase this.
{
System.out.println("Sorry, you entered the wrong ammount of digits");
}
if(num =(10 characters)
{
System.out.println("Your Phone number is " + num);
}
}
}
答案 0 :(得分:1)
<input type="text" id ="idOfValueToTest" />
<input type="submit" id ="btnValidate" value="Submit" onclick="return Validate()" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> </script>
<script type="text/javascript">
function Validate() {
var validation = document.getElementById("idOfValueToTest").value;
var pattern = /^\d{10}$/;
if (pattern.test(validation)) {
return true;
}
return false;
}
</script>
试试这个!
对不起,我误读了java到javascript。正则表达式应该工作。尝试:
public static boolean isValid(String input)
{
String regex = "^\d{10}$";
if(input.matches(regex))
{
return true;
}
return false;
}
嗨,我明白了你在说什么。正如其他人所说,你不应该使用stringbuilder来做到这一点。如果您正在寻找资源,那么我建议您在此处阅读课程说明:https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html。基本上如名称所示,stringbuilder构建字符串!使用追加实际做你想要的东西可能是一种奇怪的方式,但这将是非常奇怪和非常糟糕的编程。我将添加一个你不该做的例子!
String text = "abcdefghijklmnopq";
StringBuilder builder = new StringBuilder();
for (int i = 0; i < 10; i++)
{
builder.append(Character.toString(text.charAt(i)));
}
String result = builder.toString();
System.out.println(result);
如果您正在寻找最常用的方法,请查看其他人发布的内容。如果正则表达式似乎很复杂,那么我建议使用.length,因为这很简单,但是对正则表达式做一些研究,是一个非常好的工具!
答案 1 :(得分:1)
最好的替代方法是使用String而不是StringBuilder并使用String.length()方法来验证来自用户的输入,并且您的代码也需要进行一些更正..
import java.util.Scanner;
public class Phonenumber
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
//StringBuilder num = new StringBuilder(System.in); As we are using String,StringBUilder is not needed
System.out.println("What is your 10 digit phone number?");
String num = input.nextLine();
if(!(num.length()==10)) // Correction: If you use while here and user enters input not having 10 digits it will go to endless loop
{
System.out.println("Sorry, you entered the wrong ammount of digits");
}
if(num.length()==10) //Here you can use else to make your code more appropriate in case of time complexity(Here Time complexity won't matter but as you seem to be new to java, I think you should check this property)
{
System.out.println("Your Phone number is " + num);
}
}
}
答案 2 :(得分:1)
试试这个:
System.out.println("What is your 10 digit phone number?");
String num = input.nextLine();
while (!num.matches("\\d{10}")) {
System.out.println("Sorry, you did not enter exactly 10 digits. Try again");
num = input.nextLine();
}
这会检查长度是否为10 和所有字符都是数字。
但是如果用户输入格式化字符(如括号,虚线和空格),你可以更好地删除非数字,但仍然接受输入,通过将读数更改为:
input.nextLine().replaceAll("\\D", "");
仅供参考\D
表示&#34;非数字&#34;。这种输入清理是每个输入字段在现实世界中应该具有的,但通常都不会。
答案 3 :(得分:0)
我的主要问题是我尝试输入用户并将其限制为10个字符。我最近发现从用户输入填充StringBuilder是不可能的。我可以在将其转换为字符串后对其进行修改,但我不能使用String Builder直接限制它。