【问题标题】:Run a program using inheritance with NetBeans because NetBeans output doesn't "work" as it should使用 NetBeans 继承来运行程序,因为 NetBeans 输出没有按应有的方式“工作”
【发布时间】:2025-12-29 01:20:43
【问题描述】:

是的,标题不是很具描述性,但那是因为我不知道如何称呼这个问题。

问题是下一个:我将继承与步骤列表一起使用, 例如总和:

  1. “给我第一个号码”的消息
  2. “插入第一个数字”
  3. “给我第二个号码”的消息
  4. “插入第二个数字”
  5. 显示结果

但是输出是这样的:

  1. “插入第一个数字” 2 “插入第二个数字”
  2. “给我第一个号码”的消息
  3. “给我第二个号码”的消息
  4. 显示结果(但忽略第一个数字的存在)

现在这是代码 JavaClassPrueba1A 代码:

package package1;
import java.util.Scanner;

public class JavaClass1A {
    protected int value1, value2, result;
    Scanner dataEntry = new Scanner(System.in);
    
    //Este método pide los valores al usuario
    public void RequestData(){
        System.out.print("Give me the first value: ");
        value1 = dataEntry.nextInt();
        System.out.print("Give me the second value: ");
        value2 = dataEntry.nextInt();
    }
    
    //Este método muestra el resultado
    public void ShowResult(){
        System.out.println(result);
    }
}

JavaClassPrueba2A的代码:

package package1;
public class JavaClass2A extends JavaClass1A{
    public void Sum(){
        result = value1 + value2;
    }
}

JavaClassPrueba3A代码:

package package1;

public class JavaClass3A extends JavaClass1A{
    public void Subtraction(){
        result = value1 - value2;
    }
}

MainClass1A的代码(这是运行所有的类):

package MetodoMain;
import package1.JavaClass2A;
import package1.JavaClass3A;

public class MainClass1A {
    public static void main(String[] args){
        
        JavaClass2A messageSum = new JavaClass2A();
        messageSum.RequestData();
        messageSum.Sum();
        System.out.print("The resultado of the sum is: ");
        messageSum.ShowResult();
        
        JavaClass3A messageSubtraction = new JavaClass3A();
        messageSubtraction.RequestData();
        messageSubtraction.Subtraction();
        System.out.print("The resultado of the Subtraction is: ");
        messageSubtraction.ShowResult();
    }
}

这是所有运行的副本。这里的问题是显示/运行顺序的问题(因此不存在错误消息[是的,我很多余])

cd C:\Users\Usuario\Documents\NetBeansProjects\JavaClassPrueba2; "JAVA_HOME=C:\Program Files\Java\jdk1.8.0_151" cmd /c ""C:\Program Files\NetBeans-12.1\netbeans\java\maven\bin\mvn.cmd" -Dexec.args="-类路径 %classpath MetodoMain.MainClass1A" -Dexec.executable="C:\Program Files\Java\jdk1.8.0_151\bin\java.exe" -Dexec.classpathScope=runtime -Dmaven.ext.class.path="C: \Program Files\NetBeans-12.1\netbeans\java\maven-nblib\netbeans-eventspy.jar" -Dfile.encoding=UTF-8 org.codehaus.mojo:exec-maven-plugin:1.5.0:exec" 运行 NetBeans Compile On Save 执行。跳过阶段执行并使用依赖项目的输出目录(打开保存时编译)而不是它们的 jar 工件。

正在扫描项目...

------------------ ------

构建 JavaClassPrueba2 1.0.0-SNAPSHOT

--------------------------------[ 罐子 ]------------ ---------------------

--- exec-maven-plugin:1.5.0:exec (default-cli) @JavaClassPrueba2 ---

5 这是我像其他 3 一样输入的数字

10

给我第一个值:给我第二个值:和的结果是:15

90

100

给我第一个值:给我第二个值:减法的结果是:-10


建立成功

总时间:01:05 分钟 完成时间:2021-01-20T16:00:24-03:00

And this is a screenshot of the same message of the run

【问题讨论】:

标签: java maven netbeans


【解决方案1】:

这是 maven 在 NetBeans 上的一个 bug。 尝试改变

    System.out.print()

    System.out.println() 

在方法RequestData()

【讨论】:

    【解决方案2】:

    在我看来,NetBeans 似乎正在缓冲输出,并且可能正在等待行尾字符,然后才将迄今为止收集的输出写入“输出”窗口。您正在使用System.out.print,并且在写入文本后不会写出行尾字符。

    尝试添加行

    System.out.flush();
    

    JavaClass1A.RequestData() 中两次调用System.out.print() 之后。通过调用 flush(),这可能会强制 NetBeans 输出窗口显示它迄今为止收到的输出,而无需等待换行符。

    【讨论】: