当前位置: 首页 > 知识库问答 >
问题:

Java switch语句给出错误:“Boolean不能转换为int”

邹京
2023-03-14

所以我试图使用switch语句为位置x和位置y设置边界。我已经在下面提供了我的代码和错误信息。另外,我刚接触java,所以对我来说这可能是一个愚蠢的问题,但老实说,我目前不知道更好的问题。

public class Point{
    // Define instance variables
    private int posX;
    private int posY;
    
    //Constructor for object Point
    public Point(int x, int y){
        posX = x;
        posY = y;
    }
    //toString
    public String toString() {
   String point = null;
   point = "(" + posX + " , " + posY + ")";
   return point;
}
    //move method
    public void move(int x, int y){
        int tmpX = posX + x;
        int tmpY = posY + y;
        
        switch (tmpX){
            case tmpX > 100:
                posX = 100;
                break;
            case tmpX < 0:
                posX = 0;
                break;
            default:
                posX = posX + x;
        }
        switch (tmpY){
        case tmpY > 100:
                posY = 100;
                break;
            case tmpY < 0:
                posY = 0;
                break;
            default:
                posY = posY + y;
        }
    }
}
Point.java:23: error: incompatible types: boolean cannot be converted to int
            case tmpX > 100:
                      ^
Point.java:26: error: incompatible types: boolean cannot be converted to int
            case tmpX < 0:
                      ^
Point.java:33: error: incompatible types: boolean cannot be converted to int
        case tmpY > 100:
                  ^
Point.java:36: error: incompatible types: boolean cannot be converted to int
            case tmpY < 0:
                      ^
4 errors

共有1个答案

淳于哲
2023-03-14

代替此开关:

switch (tmpY){
case tmpY > 100:
    posY = 100;
    break;
case tmpY < 0:
    posY = 0;
    break;
default:
    posY = posY + y;
}

使用if-else:

if (tmpY > 100) {
    posY = 100;
} else if (tmpY < 0) {
    posY = 0;
} else {
    posY = posY + y;
}
 类似资料:
  • 我得到以下错误。第15行:错误:不兼容的类型:boolean不能转换为List Integer.toString()返回一个字符串实例,我将它添加到字符串列表中。为什么它给出了布尔不能转换为错误。因为返回值是字符串,而我要添加的值也是字符串。 在此输入代码

  • 在我的应用程序(这是一个Android游戏)中,我有一个方法可以检查玩家是否还活着,如果没有,运行一个动画,游戏就结束了。 根据玩家的输球方式,目前有3种不同的动画可用。 例如,它们可能从屏幕上掉下来,撞到一只鸟,或者被从天上掉下来的东西压扁。每一个都有不同的动画。 基本上,我正在做的是: 当玩家输球时,我设置了它发生的方法,例如,如果他们被鸟击中: 然后我通过在我的check Gameover(

  • 我在家庭作业中使用Eclipse,我真的很挣扎。目标是编写一个工资单程序,让用户输入他们的姓名、工作时间、工资率、联邦和州预扣税,然后输出他们预扣金额的计算信息以及他们的净工资。 我使用了我熟悉的println语句来显示输出,但老师希望我们使用函数,我根本无法让它工作。如果我使用println语句,所有的值都会填充,但由于某种原因,我无法让printf执行相同的操作。我错过了什么?如果我使用pri

  • 问题内容: 当我使用 我得到错误 错误1054:where子句中的未知列’U687678601’ 但是当我键入 它工作正常。 我正在使用mysql。 我知道这是一个新手问题,但是谁能解释为什么会这样,我可以通过编程方式添加引号吗?通过代码添加引号是个好主意吗? 谢谢 问题答案: 当我们向SQL查询提供字符串/ varchar类型时,必须使用’‘指定它。对于非varchar类型,则无需提供“。这就是

  • 我遇到错误“类型不兼容:boolean不能转换为int”

  • 我试图在if语句中调用一个方法,但我总是得到以下错误。 不兼容的类型:java.lang.String不能转换为boolean