从 main 调用带有返回变量的方法

Posted

技术标签:

【中文标题】从 main 调用带有返回变量的方法【英文标题】:Calling method with returned variable from main 【发布时间】:2017-06-11 19:26:51 【问题描述】:

目前有一个程序有2个类,一个类用于main方法,另一个用于字符串。

Main 方法在下面,我试图调用 getString 方法,它只接受用户输入并存储为字符串。 getString 运行后,我还想运行 getReverse,它使用一个简短的算法来反转字符串,然后返回它。

public class main 

public static void main(String[] args) 

    ReverseString test1 = new ReverseString();
    test1.getString();
    test1.getReverse(inputString);

字符串类:

public class ReverseString 

public ReverseString()




public String getString()

    String inputString = "";
    Scanner keyboard = new Scanner(System.in);
    System.out.print("Please enter string: ");
    inputString = keyboard.nextLine(); 
    return inputString;


public String getReverse(String inputString)

    String temp = "";
    for(int i = inputString.length(); i >= 0; i--)
    
        temp = temp + inputString.charAt(i);
    
    System.out.println(temp);
    return temp;


程序正确地接受了一个字符串,但在第一个方法被调用后不会运行第二个方法。

【问题讨论】:

从学习变量、函数等基本编程知识开始。 除了由于 inputString 在方法 main 中未知而无法编译的问题。它将返回 IndexOutOfBounds,因为 String#length 给出了长度,而 String#charAt 适用于基于 0 的索引。 @Redlab 如果 inputString 是在 main 中而不是在类中定义的,它会更好吗? 查看@xenteros的答案 你一定是在开玩笑。您的代码已经包含几个示例,说明如何调用方法并将返回的结果分配给变量。顺便说一句,您可以像 return new StringBuilder(inputString).reverse().toString(); 一样简单地实现您的 getReverse 方法... 【参考方案1】:
public static void main(String[] args) 

    ReverseString test1 = new ReverseString();
    String inputString = test1.getString();
    inputString = test1.getReverse(inputString);

可以解决问题,但您还应该进行一些重构。 总是以大写字母开头的类名。

【讨论】:

以上是关于从 main 调用带有返回变量的方法的主要内容,如果未能解决你的问题,请参考以下文章

(C++) 在同一个类中调用时,取消引用的指针返回正确的值,从 main 调用时返回 0

带有public static void main方法的类,其中的成员变量必须是static的,否则main方法没法调用。除非是main里的局部变量。因为main方法就是static的啊。

DispatchQueue.main.async 块中未更新完成处理程序的返回值

main函数的返回类型有啥区别

函数调用模型

c#的main怎么调用