【问题标题】:Return string in Java does nothing in compilerJava中的返回字符串在编译器中什么都不做
【发布时间】:2017-03-29 22:31:59
【问题描述】:

我的目标是将字符串从“def”反转为“fed”。

在这个例子(下)中,new_string 的值没有被返回。 从字面上看,控制台显示为空白。

public class ReverseString {

public String reverse(String input) {
    String new_string = "";
    int iterator = 0;
    int length = input.length();

        while(iterator < length){
            char string_input = input.charAt(iterator);
            new_string = string_input + new_string;
            iterator ++;
        }
    return new_string;
}


public static void main(String[] args){
    ReverseString test = new ReverseString();
    test.reverse("def");
}
}

但是,当我更改代码以进行系统打印时,我得到了正确的结果“馈送”。

public class ReverseString {

public void reverse(String input) {
    String new_string = "";
    int iterator = 0;
    int length = input.length();

        while(iterator < length){
            char string_input = input.charAt(iterator);
            new_string = string_input + new_string;
            iterator ++;
        }
    System.out.println(new_string);
}


public static void main(String[] args){
    ReverseString test = new ReverseString();
    test.reverse("def");
}
}

问题是: 为什么返回结果为空?

【问题讨论】:

  • 为什么你认为new_string的值没有被返回?
  • 提示:如果您的代码中没有任何打印语句,为什么没有打印时您会感到惊讶?
  • 感谢您输入 azurefrog。我只是假设 return new_string 会自行将字符串的值打印到控制台。我不知道我需要在 main 方法中运行 system.out.print 内部的方法!

标签: java string loops return


【解决方案1】:

问题

对于任何有返回值的方法,你必须返回特定的值。但是,您不必使用它。 这正是您的案例 1 中发生的情况。您执行了一个操作,返回了值但没有使用它。

可能的解决方案

如果您想在控制台上看到打印结果,请修改 main 中的方法调用行,如下 [In you first code]。

System.out.println(test.reverse("def"));//used the return value.

了解方法返回

语法如下

<return_type> <name/ID>(<parameters>){
   //....code
   return <reference of return__type/an object of return_type>;//return_value statement
}
returntypevoid时,不写

returnvalue语句。

每当 returnvalue 返回时,您都可以选择是否使用它。

【讨论】:

    【解决方案2】:

    您可能想要这样的东西?返回一个字符串变量。打印出来。

    public class ReverseString {
    
    public String reverse(String input) {
        String new_string = "";
        int iterator = 0;
        int length = input.length();
    
            while(iterator < length){
                char string_input = input.charAt(iterator);
                new_string = string_input + new_string;
                iterator ++;
            }
        return new_string;
    }
    
    
    
    public static void main(String[] args){
        ReverseString test = new ReverseString();
        System.out.println(test.reverse("def"));
    }
    }
    

    【讨论】:

    • 这正是我想要做的!实际上,我以前从未见过在 Java 中这样做过,所以我不知道缺少什么。
    • 话虽如此,请阅读我下面的答案,这是一个比我收集的更好的解释。 :P
    猜你喜欢
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多