[英]Why am I getting this error? "Bad operand type for binary operator "&&" first type: int second type: boolean"
I don't see why I would get this error because there is no boolean given, I gave 2 integers but it still tells me that there's an error.我不明白为什么会收到此错误,因为没有给出 boolean,我给了 2 个整数,但它仍然告诉我有错误。
Here's my code:这是我的代码:
import java.util.Scanner;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
class MainMenu
{
JFrame frame= new JFrame();
JFrame frame2 = new JFrame();
JFrame frame3 = new JFrame();
JButton button = new JButton("Singleplayer");
JButton button2 = new JButton("Multiplayer");
JButton b = new JButton("Submit");
JLabel label = new JLabel(" ");
int i;
int i2;
MainMenu(){
prepareGUI();
}
public void prepareGUI(){
frame.setTitle("Game");
frame.getContentPane().setLayout(null);
frame.add(button);
frame.add(button2);
button.setBounds(100,200,100,40);
button2.setBounds(200,200,100,40);
frame.setVisible(true);
frame.setBounds(200,200,400,400);
frame2.getContentPane().setLayout(null);
frame2.setBounds(200,200,400,400);
frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame3.getContentPane().setLayout(null);
frame3.setBounds(200,200,400,400);
frame3.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ActionListener buttonlistener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame2.setTitle("Multiplayer");
frame2.setVisible(true);
JLabel labelM = new JLabel("Geben sie eine Höhstzahl ein:");
JTextField hZahl = new JTextField();
JLabel labelN= new JLabel("Mit wie vielen Rateversuchen wollen sie `spielen?");`
JTextField rVers = new JTextField();
JButton b = new JButton("Submit");
labelM.setBounds(50, 50, 400, 70);
labelN.setBounds(50, 105, 400, 70);
rVers.setBounds(45, 150, 100, 30);
hZahl.setBounds(45, 95, 100, 30);
b.setBounds(150,250,100,40);
frame2.add(b);
frame2.add(hZahl);
frame2.add(labelM);
frame2.add(labelN);
frame2.add(rVers);
hZahl.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
System.out.println("The entered text is: " + hZahl.getText());
int i = Integer.parseInt(hZahl.getText());
System.out.println(i);
}
});
rVers.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
System.out.println("The entered text is: " + rVers.getText());
int i2 = Integer.parseInt(rVers.getText());
System.out.println(i2);
}
});
ActionListener buttonlistener3 = new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
frame3.setTitle("1 Player Game");
frame3.setVisible(true);
}
};
b.addActionListener(buttonlistener3);
}
};
ActionListener buttonlistener2 = new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
//frame.getContentPane().setBackground(Color.red);
//System.out.println("Multiplayer Selected");
frame2.setTitle("Multiplayer");
frame2.setVisible(true);
JLabel labelM = new JLabel("Geben sie eine Höhstzahl ein:");
JTextField hZahl = new JTextField();
JLabel labelN= new JLabel("Mit wie vielen Rateversuchen wollen sie spielen?");
JTextField rVers = new JTextField();
JButton b = new JButton("Submit");
labelM.setBounds(50, 50, 400, 70);
labelN.setBounds(50, 105, 400, 70);
rVers.setBounds(45, 150, 100, 30);
hZahl.setBounds(45, 95, 100, 30);
b.setBounds(150,250,100,40);
frame2.add(b);
frame2.add(hZahl);
frame2.add(labelM);
frame2.add(labelN);
frame2.add(rVers);
hZahl.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
System.out.println("The entered text is: " + hZahl.getText());
int i = Integer.parseInt(hZahl.getText());
System.out.println(i);
}
});
rVers.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
System.out.println("The entered text is: " + rVers.getText());
int i2 = Integer.parseInt(rVers.getText());
System.out.println(i2);
}
});
ActionListener buttonlistener3 = new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
if(i && i2 < 0){
frame3.setTitle("2 Player Game");
frame3.setVisible(true);
}
}
};
b.addActionListener(buttonlistener3);
}
};
I am unsure as to why this is happening because as far as I am concerned I did not use a single boolean, and both i and i2 are separately and clearly marked as integers.我不确定为什么会发生这种情况,因为就我而言,我没有使用单个 boolean,并且 i 和 i2 都单独且清楚地标记为整数。 The error message appears here:
错误消息出现在这里:
if(i && i2 < 0){
frame3.setTitle("2 Player Game");
frame3.setVisible(true);
}
Thank you in advance!先感谢您!
The <
operator has more precedence than the &&
operator. <
运算符的优先级高于&&
运算符。 Hence your statement will be computed as i && (i2 < 0)
.因此,您的语句将被计算为
i && (i2 < 0)
。 In this case i2 < 0
will be a boolean and i
is an integer.在这种情况下,
i2 < 0
将是 boolean 而i
是 integer。
To solve this issue use the brackets as要解决此问题,请使用括号作为
(i < 0) && (i2 < 0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.