- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作一个 GPA 计算器应用程序。我已经掌握了所有必要的代码。只是当我尝试制作 GUI 时,我收到了一个我根本不理解的错误代码。
代码:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Caculator{
public static void main(String args[]){
Scanner ream = new Scanner(System.in);
String firstnumber = "";
double firstdec;
String secondnumber = "";
double seconddec;
String thirdnumber = "";
double thirddec;
String fourthnumber = "";
double fourthdec;
String fifthnumber = "";
double fifthdec;
String sixthnumber = "";
double sixthdec;
String seventhnumber = "";
double seventhdec;
String eighthnumber = "";
double eighthdec;
double total = 0;
JTextField GPA = new JTextField();
JFrame panel = new JFrame();
panel.add(new JLabel("First Grade"));
panel.add(new JLabel("Second Grade"));
panel.add(new JTextField(firstnumber));
panel.add(new JTextField(secondnumber));
panel.add(new JLabel("Third Grade"));
panel.add(new JLabel("Fourth Grade"));
panel.add(new JTextField(thirdnumber));
panel.add(new JTextField(fourthnumber));
panel.add(new JLabel("Fifth Grade"));
panel.add(new JLabel("Sixth Grade"));
panel.add(new JTextField(fifthnumber));
panel.add(new JTextField(sixthnumber));
panel.add(new JLabel("Seventh Grade"));
panel.add(new JLabel("Eighth Grade"));
panel.add(new JTextField(seventhnumber));
panel.add(new JTextField(eighthnumber));
int result = JOptionPane.showConfirmDialog(null, panel, "Quesion", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
switch (result) {
case JOptionPane.OK_OPTION:
firstnumber = ream.nextLine();
if (firstnumber.equals("A+")) {
firstdec = 4.4;
total += firstdec;
} else
if (firstnumber.equals("A")) {
firstdec = 4.0;
total += firstdec;
} else
if (firstnumber.equals("A-")) {
firstdec = 3.7;
total += firstdec;
} else
if (firstnumber.equals("B+")) {
firstdec = 3.4;
total += firstdec;
} else
if (firstnumber.equals("B")) {
firstdec = 3.0;
total += firstdec;
} else
if (firstnumber.equals("B-")) {
firstdec = 2.7;
total += firstdec;
} else
if (firstnumber.equals("C+")) {
firstdec = 2.4;
total += firstdec;
} else
if (firstnumber.equals("C")) {
firstdec = 2.0;
total += firstdec;
} else
if (firstnumber.equals("C-")) {
firstdec = 1.7;
total += firstdec;
} else
if (firstnumber.equals("F")) {
firstdec = 0;
total += firstdec;
}
secondnumber = ream.nextLine();
if (secondnumber.equals("A+")) {
seconddec = 4.4;
total += seconddec;
} else
if (secondnumber.equals("A")) {
seconddec = 4.0;
total += seconddec;
} else
if (secondnumber.equals("A-")) {
seconddec = 3.7;
total += seconddec;
} else
if (secondnumber.equals("B+")) {
seconddec = 3.4;
total += seconddec;
} else
if (secondnumber.equals("B")) {
seconddec = 3.0;
total += seconddec;
} else
if (secondnumber.equals("B-")) {
seconddec = 2.7;
total += seconddec;
} else
if (secondnumber.equals("C+")) {
seconddec = 2.4;
total += seconddec;
} else
if (secondnumber.equals("C")) {
seconddec = 2.0;
total += seconddec;
} else
if (secondnumber.equals("C-")) {
seconddec = 1.7;
total += seconddec;
} else
if (secondnumber.equals("F")) {
seconddec = 0;
total += seconddec;
}
thirdnumber = ream.nextLine();
if (thirdnumber.equals("A+")) {
thirddec = 4.4;
total += thirddec;
} else
if (thirdnumber.equals("A")) {
thirddec = 4.0;
total += thirddec;
} else
if (thirdnumber.equals("A-")) {
thirddec = 3.7;
total += thirddec;
} else
if (thirdnumber.equals("B+")) {
thirddec = 3.4;
total += thirddec;
} else
if (thirdnumber.equals("B")) {
thirddec = 3.0;
total += thirddec;
} else
if (thirdnumber.equals("B-")) {
thirddec = 2.7;
total += thirddec;
} else
if (thirdnumber.equals("C+")) {
thirddec = 2.4;
total += thirddec;
} else
if (thirdnumber.equals("C")) {
thirddec = 2.0;
total += thirddec;
} else
if (thirdnumber.equals("C-")) {
thirddec = 1.7;
total += thirddec;
} else
if (thirdnumber.equals("F")) {
thirddec = 0;
total += thirddec;
}
fourthnumber = ream.nextLine();
if (fourthnumber.equals("A+")) {
fourthdec = 4.4;
total += fourthdec;
} else
if (fourthnumber.equals("A")) {
fourthdec = 4.0;
total += fourthdec;
} else
if (fourthnumber.equals("A-")) {
fourthdec = 3.7;
total += fourthdec;
} else
if (fourthnumber.equals("B+")) {
fourthdec = 3.4;
total += fourthdec;
} else
if (fourthnumber.equals("B")) {
fourthdec = 3.0;
total += fourthdec;
} else
if (fourthnumber.equals("B-")) {
fourthdec = 2.7;
total += fourthdec;
} else
if (fourthnumber.equals("C+")) {
fourthdec = 2.4;
total += fourthdec;
} else
if (fourthnumber.equals("C")) {
fourthdec = 2.0;
total += fourthdec;
} else
if (fourthnumber.equals("C-")) {
fourthdec = 1.7;
total += fourthdec;
} else
if (fourthnumber.equals("F")) {
fourthdec = 0;
total += fourthdec;
}
fifthnumber = ream.nextLine();
if (fifthnumber.equals("A+")) {
fifthdec = 4.4;
total += fifthdec;
} else
if (fifthnumber.equals("A")) {
fifthdec = 4.0;
total += fifthdec;
} else
if (fifthnumber.equals("A-")) {
fifthdec = 3.7;
total += fifthdec;
} else
if (fifthnumber.equals("B+")) {
fifthdec = 3.4;
total += fifthdec;
} else
if (fifthnumber.equals("B")) {
fifthdec = 3.0;
total += fifthdec;
} else
if (fifthnumber.equals("B-")) {
fifthdec = 2.7;
total += fifthdec;
} else
if (fifthnumber.equals("C+")) {
fifthdec = 2.4;
total += fifthdec;
} else
if (fifthnumber.equals("C")) {
fifthdec = 2.0;
total += fifthdec;
} else
if (fifthnumber.equals("C-")) {
fifthdec = 1.7;
total += fifthdec;
} else
if (fifthnumber.equals("F")) {
fifthdec = 0;
total += fifthdec;
}
sixthnumber = ream.nextLine();
if (sixthnumber.equals("A+")) {
sixthdec = 4.4;
total += sixthdec;
} else
if (sixthnumber.equals("A")) {
sixthdec = 4.0;
total += sixthdec;
} else
if (sixthnumber.equals("A-")) {
sixthdec = 3.7;
total += sixthdec;
} else
if (sixthnumber.equals("B+")) {
sixthdec = 3.4;
total += sixthdec;
} else
if (sixthnumber.equals("B")) {
sixthdec = 3.0;
total += sixthdec;
} else
if (sixthnumber.equals("B-")) {
sixthdec = 2.7;
total += sixthdec;
} else
if (sixthnumber.equals("C+")) {
sixthdec = 2.4;
total += sixthdec;
} else
if (sixthnumber.equals("C")) {
sixthdec = 2.0;
total += sixthdec;
} else
if (sixthnumber.equals("C-")) {
sixthdec = 1.7;
total += sixthdec;
} else
if (sixthnumber.equals("F")) {
sixthdec = 0;
total += sixthdec;
}
seventhnumber = ream.nextLine();
if (seventhnumber.equals("A+")) {
seventhdec = 4.4;
total += seventhdec;
} else
if (seventhnumber.equals("A")) {
seventhdec = 4.0;
total += seventhdec;
} else
if (seventhnumber.equals("A-")) {
seventhdec = 3.7;
total += seventhdec;
} else
if (seventhnumber.equals("B+")) {
seventhdec = 3.4;
total += seventhdec;
} else
if (seventhnumber.equals("B")) {
seventhdec = 3.0;
total += seventhdec;
} else
if (seventhnumber.equals("B-")) {
seventhdec = 2.7;
total += seventhdec;
} else
if (seventhnumber.equals("C+")) {
seventhdec = 2.4;
total += seventhdec;
} else
if (seventhnumber.equals("C")) {
seventhdec = 2.0;
total += seventhdec;
} else
if (seventhnumber.equals("C-")) {
seventhdec = 1.7;
total += seventhdec;
} else
if (seventhnumber.equals("F")) {
seventhdec = 0;
total += seventhdec;
}
eighthnumber = ream.nextLine();
if (eighthnumber.equals("A+")) {
eighthdec = 4.4;
total += eighthdec;
} else
if (eighthnumber.equals("A")) {
eighthdec = 4.0;
total += eighthdec;
} else
if (eighthnumber.equals("A-")) {
eighthdec = 3.7;
total += eighthdec;
} else
if (eighthnumber.equals("B+")) {
eighthdec = 3.4;
total += eighthdec;
} else
if (eighthnumber.equals("B")) {
eighthdec = 3.0;
total += eighthdec;
} else
if (eighthnumber.equals("B-")) {
eighthdec = 2.7;
total += eighthdec;
} else
if (eighthnumber.equals("C+")) {
eighthdec = 2.4;
total += eighthdec;
} else
if (eighthnumber.equals("C")) {
eighthdec = 2.0;
total += eighthdec;
} else
if (eighthnumber.equals("C-")) {
eighthdec = 1.7;
total += eighthdec;
} else
if (eighthnumber.equals("F")) {
eighthdec = 0;
total += eighthdec;
}
JButton b1 = new JButton("Ok");
b1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
panel.dispose();
}
});
JPanel panel1 = new JPanel(new GridLayout(0, 4));
panel1.add(new JLabel("Your GPA is: "));
panel1.add(new JTextField());
double gpa = Double.parseDouble(GPA.getText());
gpa = total / 8;
JFrame frame = new JFrame();
JOptionPane.showInputDialog(frame, "Your GPA is" + gpa);
break;
case JOptionPane.CANCEL_OPTION:
panel.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
break;
}
}
}
错误堆栈跟踪是
Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container
at java.awt.Container.checkNotAWindow(Container.java:490)
at java.awt.Container.addImpl(Container.java:1091)
at java.awt.Container.add(Container.java:973)
at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:358)
at com.apple.laf.AquaOptionPaneUI.createMessageArea(AquaOptionPaneUI.java:92)
at javax.swing.plaf.basic.BasicOptionPaneUI.installComponents(BasicOptionPaneUI.java:172)
at javax.swing.plaf.basic.BasicOptionPaneUI.installUI(BasicOptionPaneUI.java:141)
at javax.swing.JComponent.setUI(JComponent.java:666)
at javax.swing.JOptionPane.setUI(JOptionPane.java:1860)
at javax.swing.JOptionPane.updateUI(JOptionPane.java:1882)
at javax.swing.JOptionPane.<init>(JOptionPane.java:1845)
at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:857)
at javax.swing.JOptionPane.showConfirmDialog(JOptionPane.java:795)
at javax.swing.JOptionPane.showConfirmDialog(JOptionPane.java:757)
at Caculator.main(Caculator.java:55)
如果我点击“at Caculator.main(caculator.java:55)
它把我带到了这一行
int result = JOptionPane.showConfirmDialog(null, panel, "Quesion", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
最佳答案
错误消息准确地告诉您错误所在以及错误位置。
您的panel
对象的类型为JFrame
,它是一个容器。您无法将容器添加到对话框,这正是您在以下行中尝试执行的操作:
int result = JOptionPane.showConfirmDialog(null, panel, "Quesion", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
将面板
更改为JPanel
。您将需要进行更多更正,例如:
删除此项,因为 JPanel
不存在 dispose()
方法:
panel.dispose();
并删除它,因为 JPanel
不存在 setDefaultCloseOperation()
方法:
panel.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
这是您的 GPA 计算器的工作副本。
我已显着简化了您的类(class),将计算 GPA 点的逻辑合并到一个单独的方法中。
我将所有 String
变量更改为 JTextField
,因为您需要文本字段的实例来获取在每个字段中输入的文本。
import java.awt.GridLayout;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Caculator {
public static void main(String args[]) {
JPanel panel = new JPanel(new GridLayout(8, 2));
JTextField firstnumber = new JTextField(20);
JTextField secondnumber = new JTextField(20);
JTextField thirdnumber = new JTextField(20);
JTextField fourthnumber = new JTextField(20);
JTextField fifthnumber = new JTextField(20);
JTextField sixthnumber = new JTextField(20);
JTextField seventhnumber = new JTextField(20);
JTextField eighthnumber = new JTextField(20);
panel.add(new JLabel("First Grade"));
panel.add(new JLabel("Second Grade"));
panel.add(firstnumber);
panel.add(secondnumber);
panel.add(new JLabel("Third Grade"));
panel.add(new JLabel("Fourth Grade"));
panel.add(thirdnumber);
panel.add(fourthnumber);
panel.add(new JLabel("Fifth Grade"));
panel.add(new JLabel("Sixth Grade"));
panel.add(fifthnumber);
panel.add(sixthnumber);
panel.add(new JLabel("Seventh Grade"));
panel.add(new JLabel("Eighth Grade"));
panel.add(seventhnumber);
panel.add(eighthnumber);
int result = JOptionPane.showConfirmDialog(null, panel, "Quesion", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
double total = 0;
if (result == JOptionPane.OK_OPTION) {
total += getPoints(firstnumber.getText());
total += getPoints(firstnumber.getText());
total += getPoints(thirdnumber.getText());
total += getPoints(fourthnumber.getText());
total += getPoints(fifthnumber.getText());
total += getPoints(sixthnumber.getText());
total += getPoints(seventhnumber.getText());
total += getPoints(eighthnumber.getText());
JTextField GPA = new JTextField(20);
JPanel panel1 = new JPanel(new GridLayout(2, 2));
panel1.add(new JLabel("Your GPA is: "));
panel1.add(GPA);
double gpa = total / 8;
GPA.setText(String.valueOf(gpa));
JOptionPane.showMessageDialog(null, panel1);
}
}
static double getPoints(String grade) {
double points = 0;
if (grade.equals("A+")) {
points = 4.4;
} else if (grade.equals("A")) {
points = 4.0;
} else if (grade.equals("A-")) {
points = 3.7;
} else if (grade.equals("B+")) {
points = 3.4;
} else if (grade.equals("B")) {
points = 3.0;
} else if (grade.equals("B-")) {
points = 2.7;
} else if (grade.equals("C+")) {
points = 2.4;
} else if (grade.equals("C")) {
points = 2.0;
} else if (grade.equals("C-")) {
points = 1.7;
} else if (grade.equals("F")) {
points = 0;
}
return points;
}
}
<小时/>
希望这有帮助。
关于java - JOptionPane 错误 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42851005/
我已经使用 vue-cli 两个星期了,直到今天一切正常。我在本地建立这个项目。 https://drive.google.com/open?id=0BwGw1zyyKjW7S3RYWXRaX24tQ
您好,我正在尝试使用 python 库 pytesseract 从图像中提取文本。请找到代码: from PIL import Image from pytesseract import image_
我的错误 /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference
我已经训练了一个模型,我正在尝试使用 predict函数但它返回以下错误。 Error in contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]])
根据Microsoft DataConnectors的信息我想通过 this ODBC driver 创建一个从 PowerBi 到 PostgreSQL 的连接器使用直接查询。我重用了 Micros
我已经为 SoundManagement 创建了一个包,其中有一个扩展 MediaPlayer 的类。我希望全局控制这个变量。这是我的代码: package soundmanagement; impo
我在Heroku上部署了一个应用程序。我正在使用免费服务。 我经常收到以下错误消息。 PG::Error: ERROR: out of memory 如果刷新浏览器,就可以了。但是随后,它又随机发生
我正在运行 LAMP 服务器,这个 .htaccess 给我一个 500 错误。其作用是过滤关键字并重定向到相应的域名。 Options +FollowSymLinks RewriteEngine
我有两个驱动器 A 和 B。使用 python 脚本,我在“A”驱动器中创建一些文件,并运行 powerscript,该脚本以 1 秒的间隔将驱动器 A 中的所有文件复制到驱动器 B。 我在 powe
下面的函数一直返回这个错误信息。我认为可能是 double_precision 字段类型导致了这种情况,我尝试使用 CAST,但要么不是这样,要么我没有做对...帮助? 这是错误: ERROR: i
这个问题已经有答案了: Syntax error due to using a reserved word as a table or column name in MySQL (1 个回答) 已关闭
我的数据库有这个小问题。 我创建了一个表“articoli”,其中包含商品的品牌、型号和价格。 每篇文章都由一个 id (ID_ARTICOLO)` 定义,它是一个自动递增字段。 好吧,现在当我尝试插
我是新来的。我目前正在 DeVry 在线学习中级 C++ 编程。我们正在使用 C++ Primer Plus 这本书,到目前为止我一直做得很好。我的老师最近向我们扔了一个曲线球。我目前的任务是这样的:
这个问题在这里已经有了答案: What is an undefined reference/unresolved external symbol error and how do I fix it?
我的网站中有一段代码有问题;此错误仅发生在 Internet Explorer 7 中。 我没有在这里发布我所有的 HTML/CSS 标记,而是发布了网站的一个版本 here . 如您所见,我在列中有
如果尝试在 USB 设备上构建 node.js 应用程序时在我的树莓派上使用 npm 时遇到一些问题。 package.json 看起来像这样: { "name" : "node-todo",
在 Python 中,您有 None单例,在某些情况下表现得很奇怪: >>> a = None >>> type(a) >>> isinstance(a,None) Traceback (most
这是我的 build.gradle (Module:app) 文件: apply plugin: 'com.android.application' android { compileSdkV
我是 android 的新手,我的项目刚才编译和运行正常,但在我尝试实现抽屉导航后,它给了我这个错误 FAILURE: Build failed with an exception. What wen
谁能解释一下?我想我正在做一些非常愚蠢的事情,并且急切地等待着启蒙。 我得到这个输出: phpversion() == 7.2.25-1+0~20191128.32+debian8~1.gbp108
我是一名优秀的程序员,十分优秀!