Java 验证用户输入字符串
我想写一个循环,提示用户输入他们的第一个中间名和姓氏,然后通过搜索每个名字之间的空白来验证输入 示例:第一个中间最后一个 我要找的是下面这样的东西 伪代码:如果名称包含2个空格,且名称中的空格少于3个,则操作已成功。否则,请告诉用户重新输入其第一个中间名和姓氏 我该怎么做呢Java 验证用户输入字符串,java,string,validation,input,Java,String,Validation,Input,我想写一个循环,提示用户输入他们的第一个中间名和姓氏,然后通过搜索每个名字之间的空白来验证输入 示例:第一个中间最后一个 我要找的是下面这样的东西 伪代码:如果名称包含2个空格,且名称中的空格少于3个,则操作已成功。否则,请告诉用户重新输入其第一个中间名和姓氏 我该怎么做呢 import java.util.Scanner; public class Example { public static void main(String[] args) { boolean
import java.util.Scanner;
public class Example
{
public static void main(String[] args)
{
boolean isName = false;
String name = "";
int x = name.length();
Scanner input = new Scanner(System.in);
while(!isName) // Probably better to remove the while loop entirely
{
System.out.print("Please input your 'First Middle Last' name: ");
name = input.nextLine();
name.trim(); // To remove any leading or trailing white spaces
for(int i = 0; i < x; i++)
{
if(name.lastIndexOf(' ', i) == 2 && name.lastIndexOf(' ', i) < 3)
{
isName = true;
break;
}
else
System.out.print("\nEnter your name as 'First Middle Last': ");
name = input.nextLine();
name = name.trim();
System.out.print("\nInvalid input");
}
}
}
}
import java.util.Scanner;
公开课范例
{
公共静态void main(字符串[]args)
{
布尔值isName=false;
字符串名称=”;
int x=name.length();
扫描仪输入=新扫描仪(System.in);
while(!isName)//完全删除while循环可能更好
{
System.out.print(“请输入您的‘中名’姓名:”);
name=input.nextLine();
name.trim();//删除任何前导或尾随空格
对于(int i=0;i
上面产生了一个无限循环,从逻辑上我理解了原因。您可以在一个或多个空格字符上拆分
字符串,并检查是否有三个元素。大概
boolean isName = false;
String name = "";
Scanner input = new Scanner(System.in);
while (!isName) {
System.out.print("Please input your 'First Middle Last' name: ");
name = input.nextLine();
isName = (name.trim().split("\\s+").length == 3);
if (!isName) {
System.out.print("\nEnter your name as 'First Middle Last': ");
}
}
问题是(无限循环):
for(int i=0;i
x
初始化为0
,因为name.length()
最初为0。由于条件i符合,您可以使用以下公式计算空白:
int numOfSpaces = s.length() - s.replaceAll(" ", "").length();
有了这个,你可以知道你是否至少有2个空格。该链接还介绍了计算给定字符串中存在多少空格的不同方法。
干杯 我想你应该研究一下regex,这是很多简单任务的代码,我很难理解:“如果名称包含2个空格,并且名称中的空格少于3个,那么操作是成功的”怎么回事?这是伪密码?如果用户输入Thomas[space]Jones[space],则[Smith]输入正确;如果用户输入[Thomas]space,然后点击enter,则输入不正确。我至少需要两个白色的空格,谢谢。这更容易理解。它不是==3,而是<3,它已经设置为检查它是否是==2,并且现在Iv'e的编写方式不会起任何作用lol@Afflicted当您按空格拆分时,返回的数组应该有3个元素(名称),分别为first、middle和last。这就是为什么它是==3
,因为如果你有2个空格,那么你就有3个名字,这就是你想要的。是的,这是正确的答案,谢谢@Elliott Frisch。我甚至没有想到RegexThanks指出我不敢相信我把它放在了那里,不幸的是,即使它被初始化在正确的位置(比如在输入字符串之后),它仍然不能工作,因为它在逻辑上不能与if中的方法一起工作
int numOfSpaces = s.length() - s.replaceAll(" ", "").length();