注册 登录
编程论坛 JAVA论坛

一个无法执行if语句问题

一鑫 发布于 2018-10-13 14:48, 2766 次点击
import java.util.*;
class Square
{
    int length,xTopLeft,yTopLeft,xBottomRight,yBottomRight;
    int ID;
    static int nextID;
    Square(int xTopLeft,int yTopLeft,int length)
    {
        ID=nextID;nextID++;
        this.length=length;this.xTopLeft=xTopLeft;this.yTopLeft=yTopLeft;
        xBottomRight=xTopLeft+length;yBottomRight=yTopLeft-length;
    }
    void Move(int xOffset,int yOffset)
    {
        xTopLeft=xTopLeft+xOffset;
        yTopLeft=yTopLeft+yOffset;
        xBottomRight=xBottomRight+xOffset;
        yBottomRight=yBottomRight+yOffset;
    }
    double Area()
    {
        return length*length;
    }
    double Perimeter()
    {
        return length*4;
    }
   
}
public class SquareExp {
    public static void main(String[] args)
    {
        Scanner scanner=new Scanner(System.in);
        int length;
        System.out.print("请输入你的边长:");
        length=scanner.nextInt();
        System.out.print("请输入你的左上角顶点x:");
        int x=scanner.nextInt();
        System.out.print("请输入你的左上角顶点y:");
        int y=scanner.nextInt();
        Square square=new Square(x,y,length);
        System.out.println("输入: Y移动矩形  N不移动矩形");
        String a=scanner.nextLine();
        if(a=="Y")
        {
            System.out.print("请输入你移动的x距离:");
            int xOffset=scanner.nextInt();
            System.out.print("请输入你移动的y距离:");
            int yOffset=scanner.nextInt();
            square.Move(xOffset,yOffset);
        }
        else
        {   
        }
        System.out.println("边长="+length+" 周长="+square.Perimeter()+" 面积="+square.Area());
        System.out.print("左上顶点的坐标为:("+square.xTopLeft+","+square.yTopLeft+") ");
        System.out.println("右下顶点的坐标为:("+square.xBottomRight+","+square.yBottomRight+")");
    }
}
为什么没办法执行if语句,用if(a.quealsIgnoreCase("Y"))也不可以
10 回复
#2
一鑫2018-10-13 14:49
用数字控制却可以,1走if,2走else 为什么
#3
林月儿2018-10-13 16:16
把==改成.equals()试试
#4
一鑫2018-10-13 19:32
回复 3楼 林月儿
不行
#5
林月儿2018-10-13 20:49
你好像是上面输入就出问题了吧
打印一下看输入了啥
#6
红柚2018-10-14 13:00
String a = scanner.next();
String b = "Y";
   if(a.equals(b)){}

我试了这样可以进if,一般我也是这样弄的,引用类型的比较,用equals而且里面是变量名
而且我发现假如用.nextLine()也会有跳过的问题,所以直接用了next(),我也不懂为什么,还是让月儿姐解释下
#7
一鑫2018-10-14 16:56
回复 5楼 林月儿
什么意思 求指教
#8
林月儿2018-10-14 19:09
问题分析:
        nextLine()会把nextInt(),next(),nextDouble(),nextFloat()的结束换行符作为字符串读入,进而不需要从键盘输入字符串nextLine便已经转向了下一条语句执行。
    解决办法:
        在每一个nextInt(),next(),nextDouble(),nextFloat()后都加一个nextLine()语句,将被next()去掉的Enter过滤掉。
参考:https://blog.
#9
林月儿2018-10-14 19:10
有一种东西叫百度
#10
红柚2018-10-14 22:40
回复 9楼 林月儿
其实百度了,看了一点,但是没了解清楚,还是不好意思放出来说的。

只有本站会员才能查看附件,请 登录


nextLine效果

[此贴子已经被作者于2018-10-14 22:47编辑过]

#11
林月儿2018-10-14 22:53
可以都用字符串接受再转型,看怎么方便了
1