为了账号安全,请及时绑定邮箱和手机立即绑定

在不允许使用特殊字符的字符串中输入(例如; ,<>?/ $%^# 等)

在不允许使用特殊字符的字符串中输入(例如; ,<>?/ $%^# 等)

ITMISS 2022-06-04 11:01:01
我想从字符串中的用户那里获取输入,其中只允许使用字母、点(。)和空格。如果用户输入任何其他字符(期望这些字符),我的程序应该再次接受用户的输入。它应该继续这个过程,直到用户输入正确的输入(我想要的)。并且在任何时候,如果用户输入正确的输入,它就会移动得更远。我尝试了给定的代码,但它不起作用。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}
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

  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,并且在方法结束时,在检查所有字符后返回它。


注意:字符串库有一些有用的函数可以让您检查一个字符是否是字母、数字等。您不需要将所有这些字符写入 if 条件。


查看完整回答
反对 回复 2022-06-04
  • 1 回答
  • 0 关注
  • 196 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号