Java应用中的无限while循环

Java应用中的无限while循环,java,loops,while-loop,Java,Loops,While Loop,在我的Java应用程序中,我试图调整图像的大小,直到它符合所需的尺寸,但仍保持其原始比例 以下方法用于调整图像的大小 public BufferedImage ImageScaler(BufferedImage image){ scaledWidth = (int) image.getWidth() / SCALE_FACTOR * 100; scaledHeight = (int) image.getHeight() / SCALE_FACTOR * 100; scal

在我的Java应用程序中,我试图调整图像的大小,直到它符合所需的尺寸,但仍保持其原始比例

以下方法用于调整图像的大小

public BufferedImage ImageScaler(BufferedImage image){
    scaledWidth = (int) image.getWidth() / SCALE_FACTOR * 100;
    scaledHeight = (int) image.getHeight() / SCALE_FACTOR * 100;
    scaledImage = resize(image, scaledHeight, scaledWidth);

    while(scaledHeight > 150){
        scaledHeight = scaledImage.getHeight();
        scaledWidth = scaledImage.getWidth();
        scaledImage = resize(image, scaledHeight, scaledWidth);
        scaledHeight = scaledImage.getHeight();
        scaledWidth = scaledImage.getWidth();
    }

    return scaledImage;
}
while循环进入infinte循环。请帮忙

调整大小方法

 private static BufferedImage resize(BufferedImage img, int height, int width) {
    java.awt.Image tmp = img.getScaledInstance(width, height, java.awt.Image.SCALE_SMOOTH);
    BufferedImage resized = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2d = resized.createGraphics();
    g2d.drawImage(tmp, 0, 0, null);
    g2d.dispose();
    return resized;
}

你的代码实际上没有改变任何东西。假设当它进入循环时,宽度和高度都是200;前两行仅将scaledHeight和scaledWidth设置为200,第三行编辑图像以符合所述变量,然后第四行和第五行将其设置为。。同样的尺寸。如果在循环scaledHeight之前初始调整大小后未达到150,则永远不会达到。

调试时,
scaledHeight
是否会小于或等于150?显示
resize()
方法。在循环内从未减少
scaledHeight
scaledWidth
,并创建一个新的“scaledImage”具有相同的尺寸。那么它应该如何变小呢?