Возьмите входные данные в строке, в которой запрещены специальные символы (например;; <>? / $% ^ # И т. Д.) - PullRequest
0 голосов
/ 04 февраля 2019

Я хочу получить ввод от пользователя в строке, в которой разрешены только буквы, точки (.) И пробел.Если пользователь вводит любой другой символ, ожидайте этого, моя программа должна снова принять ввод от пользователя.Следует продолжить этот процесс, пока пользователь не введет правильный ввод (который я хочу).И в любой момент, если пользователь вводит правильный ввод, он движется дальше.Я попробовал данный код, но он не работает.

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 Ответ

0 голосов
/ 04 февраля 2019
    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, но если он видит недопустимый символ, логическое значение становится ложным, и в конце метода вы возвращаете его после проверки всех символов.

Примечание. Библиотека строк имеет некоторые полезные функции, которыепозволяет проверить, является ли символ буквенным, числовым и т. д. Вам не нужно записывать все эти символы в условие if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...