有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将用户输入读入忽略某些字符的字符串

我试图得到一个只包含大写字母a-G字符的字符串,忽略字母表中的任何其他字符。我尝试了一个很长的if语句,例如:

    String initString;

    for (int i = 0; i < 128; i++){
        if (input.equals("A") || input.equals("B") || input.equals("C") || input.equals("D") || input.equals("E") || input.equals("F") || input.equals("G")){
            initString = intiString + input.next();
        }

    }

但有问题,例如aaaadddggijubbb的输入字符串 但是保存到IntitString的字符串将是aaaaddgGBBBB。我如何在每次迭代后添加到字符串中,因为我只是尝试添加输入。下一个和下一个字符串不工作


共 (3) 个答案

  1. # 1 楼答案

    那个代码是非常错误的next()通常是迭代器方法,迭代器不是字符串。由于您在next()之前检查了equal(),所以您甚至没有检查实际得到的字符

    无论如何。使用输入字符串并删除不需要的字符可能比使用循环更容易:

    String input = "AAAADDDGGIJUBBBB";
    String initString = Pattern.compile( "[^A-G]++" ).matcher( input ).replaceAll( "" );
    // initString = "AAAADDDGGBBBB"
    

    或者如果您真的真的想使用循环if而不是正则表达式:

    String input = "AAAADDDGGIJUBBBB";
    StringBuilder buf = new StringBuilder( input.length() );
    for ( int codepoint : input.chars().toArray() ) // You can also use char, slightly simpler
       if ( codepoint >= 'A' && codepoint <= 'G' )
          buf.append( Character.toChars( codepoint ) ); // Simply append the char here
    String initString = buf.toString();
    // initString = "AAAADDDGGBBBB"
    
  2. # 2 楼答案

    试试这个

    public class MyClass {
            public static void main(String args[]) {
                System.out.println(getAG("JUUYYTTYYGAAAFIUFF")); //This returns GAAAFFF
            }
    
            public static String getAG(String input)
            {
                String outValue = "";
                for(char c:input.toCharArray())
                {
                    if(c >= 'A' && c<= 'G')
                    {
                        outValue += "" + c;
                    }
                }
                return outValue;
            }
        }
    
  3. # 3 楼答案

    试着这样做:

    char cont;
    String initString = "";
    do{
       Scanner sc =  new Scanner(System.in); 
       String input = sc.next();
    
       for(int i = 0; i < input.length(); i++){ 
          char ch =  input.charAt(i);
          if(ch >= 'A' && ch <= 'G'){
             initString = initString + ch;
          }
        }
        System.out.println("Do you want to enter more words(Y/N)");
        cont = sc.next().charAt(0); 
    }while(cont != 'N');