Как я могу разделить строку с помощью функции charAt ()? - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь разбить предложение, которое состоит из 3 разных частей, и они разбиты на пустые.

Я пытался использовать логическое значение для подсчета, где необходимо перейти к следующей части, но он все еще не работает и возвращает ноль ...

String sentence="name   password   A";
String username;
String password;
char type;

for(int j=0;j<sentence.length();j++){
   SS=sentence.charAt(i)
   String usernamehelper="";
   String passwordhelper="";
   char typehelper=' ';
   boolean usernameend=false;
   boolean passwordend=false;
   boolean typeend=false;

   if(SS!=' ' && usernameend==false){
        usernamehelper += String.valueOf(SS);
   }else if(SS==' ' && usernameend==false){
        usernameend=true;
   }else if(SS!=' ' && usernameend==true && passwordend==false){
        passwordhelper += String.valueOf(SS);
   }else if(SS==' ' && usernameend==true && passwordend==false){
        passwordend=true;
   }else if(SS!=' ' && usernameend==true && passwordend==true){
        typehelper=SS;
        typeend=true;
        username=usernamehelper;
        password=passwordhelper;
        type=typehelper;
        user1=new user(username, password, type);
   }
}

спасибо большое !!!

1 Ответ

0 голосов
/ 10 ноября 2019

Во-первых, в вашем коде много проблем, таких как: переменные, инициализированные внутри цикла for, пропущенные точки с запятой ...

Кроме того, наличие нескольких пробелов, разделяющих текст, вызывает у вас проблемы.

Я пытался исправить ваш код, используя поменьше ветвей. См. Код ниже

    String sentence="name    password    A";
    String username = "";
    String password ="";
    char SS ;

    //Result : name , password , type
    String[] result = new String[3] ;
    int i= 0 ;

    // To treat multiple spaces 
    boolean previousSpace = false ;

    String textHelper="";

    for(int j=0;j<sentence.length();j++){
        SS=sentence.charAt(j);
        char typehelper=' ';
        boolean typeend=false;

        if(SS!=' '){
            textHelper+=String.valueOf(SS);
            previousSpace = false ;
        }else if(SS==' ' && previousSpace == false ){
            result[i] = textHelper ;    
            textHelper = "" ;
            previousSpace = true ;
            i++ ;
        }

    }

    //Last Text ( type )
    result[i]= textHelper ;

    System.out.println("username " + result[0]);
    System.out.println("password " +result[1]);
    System.out.println("type " + result[2]);

Однако вы можете сделать все это всего за две строки, используя метод split ("\\ s +").

\\ s + : соответствует последовательности из одного или нескольких пробельных символов. См. код ниже

    String sentence="name    password    A";
    String[] result =sentence.split("\\s+");

    System.out.println("username " + result[0]);
    System.out.println("password " +result[1]);
    System.out.println("type " + result[2]);
...