繁体   English   中英

为什么我会收到此错误? “二元运算符“&&”的操作数类型错误 第一种类型:int 第二种类型:布尔值

[英]Why am I getting this error? "Bad operand type for binary operator "&&" first type: int second type: boolean"

我不明白为什么会收到此错误,因为没有给出 boolean,我给了 2 个整数,但它仍然告诉我有错误。

这是我的代码:

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);
            }
        };
    

我不确定为什么会发生这种情况,因为就我而言,我没有使用单个 boolean,并且 i 和 i2 都单独且清楚地标记为整数。 错误消息出现在这里:

if(i && i2 < 0){
      frame3.setTitle("2 Player Game");
      frame3.setVisible(true);
                        }

先感谢您!

<运算符的优先级高于&&运算符。 因此,您的语句将被计算为i && (i2 < 0) 在这种情况下, i2 < 0将是 boolean 而i是 integer。

要解决此问题,请使用括号作为

(i < 0) && (i2 < 0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM