【问题标题】:Reverse String Method type mismatch error java反向字符串方法类型不匹配错误java
【发布时间】:2018-11-26 08:36:51
【问题描述】:

我正在尝试使用一种方法来反转字符串中的字符,但我不断收到类型不匹配错误。有什么想法吗?

public static String userReverse (String userEntry3) {
    String reverse = "";    
       for (int i = (userEntry3.length() -1); i >= 0 ; i--) {
       reverse = System.out.println(userEntry3.charAt(i));
    }
    return reverse;
    }

【问题讨论】:

    标签: java string methods types


    【解决方案1】:

    System.out.println 是一个 void 方法。它什么也不返回。所以它不能分配回String 变量

    你的代码错了。

    如果你想反转一个字符串,你可以使用这个:

    public static String userReverse (String userEntry3) {
        return new StringBuilder(userEntry3).reverse().toString()
    }
    

    【讨论】:

    • 当然在实践中我们会这样做,但也许 OP 需要实现他自己的反转逻辑。
    • 哇。 StringBuilder::reverse 以前不知道这种方法存在:P
    【解决方案2】:

    去掉System.out.println并添加+=来连接新的字符

    public static String userReverse (String userEntry3) {
        String reverse = "";    
        for (int i = (userEntry3.length() -1); i >= 0 ; i--) {
            reverse += userEntry3.charAt(i);
        }
        return reverse;
    }
    

    编辑:正如 Tim 在 cmets 中所说,StringBuilder 也可以使用(并且比在循环中连接字符串更好):

    public static String userReverse (String userEntry3) {
        StringBuilder reverse = new StringBuilder();    
        for (int i = (userEntry3.length() -1); i >= 0 ; i--) {
            reverse.append(userEntry3.charAt(i));
        }
        return reverse.toString();
    }
    

    【讨论】:

    • 仍然没有解释,为什么StringBuilder更好,System.out.println()有什么问题糟糕的编程(er)实例。
    【解决方案3】:

    一种更优化的反转字符串的方法包括两种指针方法: 使用一个指针从头开始,另一个指针从结尾开始。当他们相遇时,你的弦已经颠倒了

    public static String userReverse (String userEntry3) {
    
        int i = 0;
        int j = userEntry3.length()-1;
        StringBuilder myName = new StringBuilder(userEntry3);
    
        for(; i < j ; i++,j--){
            char temp = userEntry3.charAt(i);
            myName.setCharAt(i,userEntry3.charAt(j));
            myName.setCharAt(j,temp);
        }
        return myName.toString();
    
    }
    

    【讨论】:

      【解决方案4】:

      System.out.println() 是一个 void 方法,它不返回任何内容。你应该这样尝试,

      public static String userReverse (String userEntry3) {
      String reverse = "";    
        for (int i = (userEntry3.length() -1); i >= 0 ; i--) {
         reverse += userEntry3.charAt(i).toString();
      }
      return reverse;
      }
      

      【讨论】:

      • 当然,在这种情况下这是最简单的做法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 2011-10-05
      • 2019-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多