import java.util.Scanner;
import javax.swing.*;
@SuppressWarnings("serial")
public class Synthetic_Division extends JFrame{
public void init(){
JTextField JTF = new JTextField();
JLabel label = new JLabel();
JPanel panel = new JPanel();
panel.add(label);
panel.add(JTF);
this.add(panel);
}
public Synthetic_Division(){
super("Synthetic Division");
this.init();
this.setSize(600, 400);
this.setVisible(true);
}
public static void main(String[] args) {
int sol01 = 0, sol12 = 0, sol23 = 0, sol34 = 0, sol45 = 0, cross12 = 0, cross23 = 0, cross34 = 0, cross45 = 0, cross56 = 0, Remainder = 0, Divisor = 0, Number1 = 0, Number2 = 0, Number3 = 0, Number4 = 0, Number5 = 0, Number6 = 0, NumberOfNumbers = 0;
System.out.println("Please input the following values accordingly.");
System.out.println("1. Numbers in equation (: 4-6 :)");
System.out.println("2. Divisor (: After the sign has been flipped :)");
System.out.println("3. First Number");
System.out.println("4. Second Number");
System.out.println("5. Third Number");
System.out.println("6. Fourth Number");
System.out.println("7. Fifth Number (: If Needed :)");
System.out.println("8. Sixth Number (: If Needed :)");
Scanner in = new Scanner(System.in);
NumberOfNumbers = in.nextInt();
Divisor = in.nextInt();
Number1 = in.nextInt();
Number2 = in.nextInt();
Number3 = in.nextInt();
Number4 = in.nextInt();
if (NumberOfNumbers == 5 || NumberOfNumbers == 6) {
Number5 = in.nextInt();
}
if (NumberOfNumbers == 6) {
Number6 = in.nextInt();
}
if (NumberOfNumbers == 4) {
sol01 = Number1;
cross12 = sol01 * Divisor;
sol12 = Number2 + cross12;
cross23 = sol12 * Divisor;
sol23 = Number3 + cross23;
cross34 = sol23 * Divisor;
Remainder = Number4 + cross34;
if (Remainder == 0) {
System.out.println(sol01 + " + " + sol12 + " + " + sol23
+ " with no remainder! ");
} else {
System.out.println(sol01 + " + " + sol12 + " + " + sol23
+ " with a remainder of: " + Remainder);
}
} else if (NumberOfNumbers == 5) {
sol01 = Number1;
cross12 = sol01 * Divisor;
sol12 = Number2 + cross12;
cross23 = sol12 * Divisor;
sol23 = Number3 + cross23;
cross34 = sol23 * Divisor;
sol34 = Number4 + cross34;
cross45 = sol34 * Divisor;
Remainder = Number5 + cross45;
if (Remainder == 0) {
System.out.println(sol01 + " + " + sol12 + " + " + sol23 + " + "
+ sol34 + " with no remainder! ");
} else {
System.out.println(sol01 + " + " + sol12 + " + " + sol23
+ " + " + sol34 + " with a remainder of: " + Remainder);
}
} else if (NumberOfNumbers == 6) {
sol01 = Number1;
cross12 = sol01 * Divisor;
sol12 = Number2 + cross12;
cross23 = sol12 * Divisor;
sol23 = Number3 + cross23;
cross34 = sol23 * Divisor;
sol34 = Number4 + cross34;
cross45 = sol34 * Divisor;
sol45 = Number5 + cross45;
cross56 = sol45 * Divisor;
Remainder = Number6 + cross56;
if (Remainder == 0) {
System.out.println(sol01 + " + " + sol12 + " + " + sol23 + " + "
+ sol34 + " + " + sol45 + " with no remainder! ");
} else {
System.out.println(sol01 + " + " + sol12 + " + " + sol23
+ " + " + sol34 + " + " + sol45
+ " with a remainder of: " + Remainder);
}
} else {
System.out.println("Please input correct number of numbers");
}
}
}
出于某种原因,当我运行此代码时,没有 GUI 显示,但有一个程序开始运行,我可以随时停止。正如您可能从代码中看出的那样,我对 Java 非常陌生。我刚刚添加了其余的代码,希望能帮助排除故障,尽管我还没有在主类中实现 GUI,因为我想看看 GUI 是否是我想要的第一个样子。
最佳答案
您错过了程序的“入口”。在 java 中,这是我已添加到您提供的代码中的 main()
方法。您只需要实际创建您编写的类的对象即可。另外,如果您打算进行 Swing 开发,您可能需要查看 Swing 的 EDT(事件调度线程)。找到它here .
import javax.swing.*;
@SuppressWarnings("serial")
public class Synthetic_Division extends JFrame {
void init() {
JTextField JTF = new JTextField();
JLabel label = new JLabel();
JPanel panel = new JPanel();
panel.add(label);
panel.add(JTF);
this.add(panel);
}
public Synthetic_Division() {
super("Synthetic Division");
this.init();
this.setSize(600, 400);
this.setVisible(true);
}
//Here is the part you were missing. Everything else is fine.
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
new Synthetic_Division();
}
});
}
}
编辑
看到您的编辑后,我可以看到主要问题是您从未创建类的实例。您缺少的主要内容是new Synthetic_Division();
。其他一些提示: 尽量不要将命令行 (System.out.println()
) 和 GUI 代码合并到一个程序中。对于您和用户来说,这很快就会变得令人困惑。另外,请尝试遵守标准 Java 命名约定。类以大写字母开头,后面的每个单词也是大写 SyntheticDivision
,而变量以小写字母开头,后面的每个单词也是大写 myVariableToWorkWith
。
关于Java GUI 未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21199595/