我想从User中获取String形式的输入,其中仅允许使用字母,点(。)和空格。如果用户输入了其他任何字符,则我的程序应再次从用户那里输入。它应该继续这个过程,直到用户输入正确的输入(我想要的)为止。而且在任何时候,如果用户输入正确的输入,它都会进一步前进。我尝试了给定的代码,但无法正常工作。
import java.util.Scanner;
public class TourPlanner{
public static boolean validname(String name){
String nameUp=name.toUpperCase();
for(int i=0;i<nameUp.length();i++){
char charUp=nameUp.charAt(i);
if(charUp=='A' || charUp=='B' || charUp=='C' || charUp=='D' || charUp=='E' || charUp=='F' || charUp=='G' || charUp=='H' || charUp=='I' || charUp=='J' || charUp=='K' || charUp=='L' || charUp=='M' || charUp=='N' || charUp=='O' || charUp=='P' || charUp=='Q' || charUp=='R' || charUp=='S' || charUp=='T' || charUp=='U' || charUp=='V' || charUp=='W' || charUp=='X' || charUp=='Y' || charUp=='Z' || charUp=='.' || charUp==' '){
return true;
}
}
return false;
}//valid name
public static void intro(String name, Scanner in){
validname(name);
while(validname(name)==false){
System.out.print("*** Please Enter Name Correctly ***\n");
System.out.print("What is your Name? ");
name=in.nextLine();
}
String designation;
System.out.print("Nice to meet you "+name+" Where are you travelling to? ");
designation=in.nextLine();
System.out.print("Great! "+designation+" sounds like a great trip.");
}//intro
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("**** Welcome to tour Planner ****\n");
System.out.print("What is your Name?");
String name=in.nextLine();
intro(name,in);
System.out.println("\n\n********************************************\n");
}//main
}
答案 0 :(得分:0)
public static boolean validname(String name){
boolean boo = true;
String nameUp=name.toUpperCase();
for(int i=0;i<nameUp.length();i++){
char charUp=nameUp.charAt(i);
if(charUp!='A' && charUp!='B' && charUp!='C' && charUp!='D' && charUp!='E' && charUp!='F' && charUp!='G' && charUp!='H' && charUp!='I' && charUp!='J' && charUp!='K' && charUp!='L' && charUp!='M' && charUp!='N' && charUp!='O' && charUp!='P' && charUp!='Q' && charUp!='R' && charUp!='S' && charUp!='T' && charUp!='U' && charUp!='V' && charUp!='W' && charUp!='X' && charUp!='Y' && charUp!='Z' && charUp!='.' && charUp!=' '){
boo = false;
}
}
return boo;
}//valid name
一旦方法遇到“ return”,它将停止工作并且不检查其他条件。在您的代码中,您的方法检查第一个字母并确定它是有效的,它返回true,并且不检查其他字符。因此,我修改了您的代码,该方法创建了一个布尔值,该值最初为true。并检查输入字符串中是否出现无效字符。整个循环后;如果不是,则返回true,但是如果确实看到无效字符,则布尔值变为false,并且在方法结束时,请在检查所有字符后将其返回。
注意:字符串库具有一些有用的功能,可让您检查char是否为字母,数字等。您无需将所有这些字符都写入if条件。