java—以不允许使用特殊字符的字符串形式获取输入(如;,< >?/$%^#等)

mmvthczy  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(438)

我想从用户输入字符串,其中只有字母,点(.)和空间是允许的。如果用户输入除这些字符以外的任何其他字符,我的程序应该再次从用户那里获取输入。它应该继续这个过程,直到用户输入正确的输入(这是我想要的)。在任何时候,如果用户输入右键,它会移动得更远。我试过给定的代码,但不起作用。

  1. import java.util.Scanner;
  2. public class TourPlanner{
  3. public static boolean validname(String name){
  4. String nameUp=name.toUpperCase();
  5. for(int i=0;i<nameUp.length();i++){
  6. char charUp=nameUp.charAt(i);
  7. 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==' '){
  8. return true;
  9. }
  10. }
  11. return false;
  12. }//valid name
  13. public static void intro(String name, Scanner in){
  14. validname(name);
  15. while(validname(name)==false){
  16. System.out.print("***Please Enter Name Correctly***\n");
  17. System.out.print("What is your Name? ");
  18. name=in.nextLine();
  19. }
  20. String designation;
  21. System.out.print("Nice to meet you "+name+" Where are you travelling to? ");
  22. designation=in.nextLine();
  23. System.out.print("Great! "+designation+" sounds like a great trip.");
  24. }//intro
  25. public static void main(String[] args) {
  26. Scanner in=new Scanner(System.in);
  27. System.out.println("****Welcome to tour Planner****\n");
  28. System.out.print("What is your Name?");
  29. String name=in.nextLine();
  30. intro(name,in);
  31. System.out.println("\n\n********************************************\n");
  32. }//main
  33. }
im9ewurl

im9ewurl1#

  1. public static boolean validname(String name){
  2. boolean boo = true;
  3. String nameUp=name.toUpperCase();
  4. for(int i=0;i<nameUp.length();i++){
  5. char charUp=nameUp.charAt(i);
  6. 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!=' '){
  7. boo = false;
  8. }
  9. }
  10. return boo;
  11. }//valid name

一旦一个方法遇到“return”,它就停止工作并且不检查其他条件。在您的代码中,您的方法检查第一个字母并确定它是有效的,它返回true而不检查其他字符。因此,我修改了您的代码,该方法创建了一个布尔值,该值最初为true。并检查输入字符串中是否出现无效字符。整圈后;如果不是,则返回true,但如果确实看到无效字符,则布尔值将变为false,并且在方法末尾,您将在检查所有字符后返回它。
注意:字符串库有一些有用的函数,允许您检查字符是否是字母、数字等。您不需要将所有这些字符都写入if条件。

展开查看全部

相关问题