Java 这个代码怎么了? 公共类大型机扩展JFrame{ 列表等级=新的ArrayList(); 列表字符=新的ArrayList(); List charsToString=new ArrayList(); 双tempsall=0; 内部评级=0; 边框红线=BorderFactory.createLineBorder(Color.red), greenLine=BorderFactory.createLineBorder(Color.green); JLabel等级标签=新JLabel(“:Normale Arbeiten hier Noten durch,trennen!Klassenarbeit hier:”); JLabel输出=新JLabel(“注:”); JTextField normalGrades=新的JTextField(20); JTextField bigGrade=新的JTextField(20); JButton calc=新JButton(“注意berechnen!”); 公共静态void main(字符串[]args){ 新主机(); } 公共主机(){ 超级(“Noten ausrechnen”); 设置大小(1000200); 可设置大小(假); setDefaultCloseOperation(关闭时退出); setLayout(新的BorderLayout()); bigGrade.Setboorder(红线); 正常等级。订单(绿线); 添加(计算,边界布局。页面_开始); 添加(普通坡度、边界布局、直线起点); 添加(等级标签、边框布局、中心); 添加(bigGrade,BorderLayout.LINE_END); 添加(输出,边框布局。页面_结尾); setVisible(真); calc.addActionListener(新ActionListener(){ @凌驾 已执行的公共无效操作(操作事件e){ 对于(int i=0;i
第37行的代码(calc.addActionListener(新ActionListener()) 到第59行(最后第二个}) 似乎没有正确读取字符串。。。 我不知道为什么。。。 假设代码将它从普通字符串获得的字符串转换为int 但它什么也没做。。Java 这个代码怎么了? 公共类大型机扩展JFrame{ 列表等级=新的ArrayList(); 列表字符=新的ArrayList(); List charsToString=new ArrayList(); 双tempsall=0; 内部评级=0; 边框红线=BorderFactory.createLineBorder(Color.red), greenLine=BorderFactory.createLineBorder(Color.green); JLabel等级标签=新JLabel(“:Normale Arbeiten hier Noten durch,trennen!Klassenarbeit hier:”); JLabel输出=新JLabel(“注:”); JTextField normalGrades=新的JTextField(20); JTextField bigGrade=新的JTextField(20); JButton calc=新JButton(“注意berechnen!”); 公共静态void main(字符串[]args){ 新主机(); } 公共主机(){ 超级(“Noten ausrechnen”); 设置大小(1000200); 可设置大小(假); setDefaultCloseOperation(关闭时退出); setLayout(新的BorderLayout()); bigGrade.Setboorder(红线); 正常等级。订单(绿线); 添加(计算,边界布局。页面_开始); 添加(普通坡度、边界布局、直线起点); 添加(等级标签、边框布局、中心); 添加(bigGrade,BorderLayout.LINE_END); 添加(输出,边框布局。页面_结尾); setVisible(真); calc.addActionListener(新ActionListener(){ @凌驾 已执行的公共无效操作(操作事件e){ 对于(int i=0;i,java,swing,Java,Swing,第37行的代码(calc.addActionListener(新ActionListener()) 到第59行(最后第二个}) 似乎没有正确读取字符串。。。 我不知道为什么。。。 假设代码将它从普通字符串获得的字符串转换为int 但它什么也没做。。 但我也没有发现错误…我认为else返回;是该行导致了问题。请试运行该行以获取值,并检查是否可以识别问题。您应该重新考虑以下事项: public class MainFrame extends JFrame { List<Integer>
但我也没有发现错误…我认为else返回;是该行导致了问题。请试运行该行以获取值,并检查是否可以识别问题。您应该重新考虑以下事项:
public class MainFrame extends JFrame {
List<Integer> grades = new ArrayList<Integer>();
List<Character> chars = new ArrayList<Character>();
List<String> charsToString = new ArrayList<String>();
double tempSmall = 0;
int mainGrade = 0;
Border redLine = BorderFactory.createLineBorder(Color.red),
greenLine = BorderFactory.createLineBorder(Color.green);
JLabel grades_Label = new JLabel(" : Normale Arbeiten hier Noten durch , trennen ! Klassenarbeit hier : ");
JLabel output = new JLabel(" Note : ");
JTextField normalGrades = new JTextField(20);
JTextField bigGrade = new JTextField(20);
JButton calc = new JButton("Note berechnen !");
public static void main(String[] args) {
new MainFrame();
}
public MainFrame(){
super("Noten ausrechnen");
setSize(1000, 200);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new BorderLayout());
bigGrade.setBorder(redLine);
normalGrades.setBorder(greenLine);
add(calc, BorderLayout.PAGE_START);
add(normalGrades, BorderLayout.LINE_START);
add(grades_Label, BorderLayout.CENTER);
add(bigGrade, BorderLayout.LINE_END);
add(output, BorderLayout.PAGE_END);
setVisible(true);
calc.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for(int i = 0; i < normalGrades.getText().length(); i++){
chars.add(normalGrades.getText().charAt(i));
}
for(int i = 0; i < chars.size(); i++){
if(chars.get(i).equals("1") || chars.get(i).equals("2") || chars.get(i).equals("3") || chars.get(i).equals("4") || chars.get(i).equals("5") || chars.get(i).equals("6")){
grades.add(Character.getNumericValue(chars.get(i).charValue()));
}else{
return;
}
}
for(int i = 0; i < grades.size(); i++){
tempSmall += grades.get(i);
}
tempSmall /= grades.size();
output.setText(" Note : " + tempSmall);
}
});
}
}
您似乎无法处理
grades.size()
为0的情况,这可能会使您的程序崩溃。如果语句:
tempSmall /= grades.size();
为此:
if(chars.get(i).equals("1") || chars.get(i).equals("2") || chars.get(i).equals("3") || chars.get(i).equals("4") || chars.get(i).equals("5") || chars.get(i).equals("6")){
grades.add(Character.getNumericValue(chars.get(i).charValue()));
}
因为您正在比较的是字符
,而不是字符串
。'
而不是“
”
,这是完全不同的。您想让我们在这里数行吗?请在您的代码中标记这一点。请详细说明“似乎不起作用”“。此代码没有导入和其他内容。您所说的行与代码中的行一样?我敢打赌,问题在于他的else从for
循环的中间返回。添加一个try catch,然后在此处粘贴errortempSmall/=grades.size();如果grades为空?chars.get(I).等于(“1”)
永远不会是真的-Char
与String
=“1”
而不是.equals
if(chars.get(i).equals("1") || chars.get(i).equals("2") || chars.get(i).equals("3") || chars.get(i).equals("4") || chars.get(i).equals("5") || chars.get(i).equals("6")){
grades.add(Character.getNumericValue(chars.get(i).charValue()));
}
if(chars.get(i).equals('1') || chars.get(i).equals('2') || chars.get(i).equals('3') || chars.get(i).equals('4') || chars.get(i).equals('5') || chars.get(i).equals('6')){
grades.add(Character.getNumericValue(chars.get(i).charValue()));
}