使用Java中的扫描仪接受空字符串或长度为0的字符串作为输入
我使用Java中的Scanner获取用户条目,如姓名、姓氏、电子邮件和电话。姓名和姓氏是必需的,但电子邮件和电话不是必需的,用户只需按enter键即可将其保留为空 我想做的是添加一个方法,该方法将验证条目是否为空或长度是否为0,以及是否为空 当用户点击输入时,扫描器将接受空字符串作为有效值 这是我用来验证每个条目长度的方法,如果长度小于或大于最小值或最大值,则显示错误消息使用Java中的扫描仪接受空字符串或长度为0的字符串作为输入,java,string,java.util.scanner,Java,String,Java.util.scanner,我使用Java中的Scanner获取用户条目,如姓名、姓氏、电子邮件和电话。姓名和姓氏是必需的,但电子邮件和电话不是必需的,用户只需按enter键即可将其保留为空 我想做的是添加一个方法,该方法将验证条目是否为空或长度是否为0,以及是否为空 当用户点击输入时,扫描器将接受空字符串作为有效值 这是我用来验证每个条目长度的方法,如果长度小于或大于最小值或最大值,则显示错误消息 public static String validateString (String msgSoll, String ms
public static String validateString (String msgSoll, String msgErr,
int lngMin, int lngMax) {
String myString = null;
if (lngMin >= 0 && lngMax >= lngMin) {
do {
System.out.print(msgSoll);
myString = myScanner.nextLine();
if (myString.length() < lngMin || myString.length() > lngMax) {
System.out.println(msgErr);
}
} while (myString.length() < lngMin || myString.length() > lngMax);
}
return myString;
}
publicstaticstringvalidatestring(stringmsgsoll、stringmsgerr、,
整数lngMin,整数lngMax){
字符串myString=null;
如果(lngMin>=0&&lngMax>=lngMin){
做{
系统输出打印(msgSoll);
myString=myScanner.nextLine();
if(myString.length()lngMax){
系统输出打印LN(msgErr);
}
}while(myString.length()lngMax);
}
返回myString;
}
如果有人能用这种方法帮助我,我将不胜感激
Thank's您可以使用(可从Java-11获得)来测试输入
import java.util.Scanner;
public class Main {
static Scanner myScanner = new Scanner(System.in);
public static void main(String[] args) {
// Test
System.out.println("Your name: " + validateString("Enter your name: "));
}
public static String validateString(String message) {
String input = "";
do {
System.out.print(message);
input = myScanner.nextLine();
if (input.isBlank()) {
System.out.println("It's an empty string.");
}
} while (input.isBlank());
return input;
}
}
运行示例:
Enter your name:
It's an empty string.
Enter your name:
It's an empty string.
Enter your name: Hello
Your name: Hello
注意:如果您的Java版本低于11
,您可以使用if(input.isEmpty()| | input.trim().length()==0)
作为条件。您可以使用(可从Java-11获得)测试输入
import java.util.Scanner;
public class Main {
static Scanner myScanner = new Scanner(System.in);
public static void main(String[] args) {
// Test
System.out.println("Your name: " + validateString("Enter your name: "));
}
public static String validateString(String message) {
String input = "";
do {
System.out.print(message);
input = myScanner.nextLine();
if (input.isBlank()) {
System.out.println("It's an empty string.");
}
} while (input.isBlank());
return input;
}
}
运行示例:
Enter your name:
It's an empty string.
Enter your name:
It's an empty string.
Enter your name: Hello
Your name: Hello
注意:如果您的Java版本低于
11
,您可以使用if(input.isEmpty()| | input.trim().length()==0)
作为条件。该方法有什么问题?此方法可以,但只是验证条目的长度。我想做的是添加一个方法,该方法将验证条目是否为空或长度是否为0,如果用户按enter键,则扫描程序将接受空字符串作为有效条目。那么,如果确定,为什么要发布该方法?请在尝试验证的位置发布方法。从你上面的帖子中,我想不出你需要什么,我只是添加了一个else-if语句来检查值是否为空或长度是否为0,并将该条件添加到while循环中,现在它似乎可以工作了。你有没有其他办法让我的代码更好?if(chaine.isBlank()| | chaine.length()==0){chaine=“Empty”}else if(chaine.length()