有 Java 编程相关的问题?

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

返回语句后的java意外输出

我有以下代码:

public class MainClass {

    static int someStaticVariable = 0;

    public static void main(String[] args) {

        MainClass obj = new MainClass();
        obj.someInstanceMethod();
        System.out.println("Count in main method " + someStaticVariable);
    }

    public int someInstanceMethod() {

        String someString = "line1\nline2\n";

        System.out.println("Count in someInstanceMethod method "
                    + (someStaticVariable + someString.split("\r\n|\r|\n").length));

        return (someStaticVariable + someString.split("\r\n|\r|\n").length);

    }
}

问题:为什么输出是:

Count in someInstanceMethod method 2
Count in main method 0

而非

Count in someInstanceMethod method 2
Count in main method 2

以及为什么它在someInstanceMethod中打印到Count in someInstanceMethod method 2,然后返回0,然后在main方法中打印0


共 (2) 个答案

  1. # 1 楼答案

    您没有为someStaticVariable分配任何内容;您忽略了someInstanceMethod的返回。试一试

    someStaticVariable = obj.someInstanceMethod();
    

    或者,您可以在方法本身中指定它

    someStaticVariable += someString.split("\r\n|\r|\n").length;
    return (someStaticVariable + someString.split("\r\n|\r|\n").length);
    
  2. # 2 楼答案

    问题是您没有篡改someStaticVariable

    您只需打印出someStaticVariable(即0)和someString.split("\r\n|\r|\n").length之和

    您需要做的是分配:

    someStaticVariable = obj.someInstanceMethod();