java for循环;‘非法表达式’‘不兼容类型: 从double转换到float可能会有损失’的处理

发布时间:2024年01月18日

一、打印出所有水仙花数

之所以会报这个‘不是语句’、‘非法表达式’的错是因为

public class NarcissisticNumber {
    public static void main(String[] args) {
        for (int i = 100; i < 1000; i++) {
            int sum = 0;
            int num = i;

            for (num > 0) {
                int digit = num % 10;
                sum += digit * digit * digit;
                num /= 10;
            }

            if (sum == i) {
                System.out.println(i);
            }
        }
    }
}

如上,我在里面的那个for(num>0)循环里没有遵循for循环三要素,即?变量初始化;变量条件;变量变化

形如:

for (int num=i;num>0;num%10){}

由于我上面已经有 int num=i;以及下面有了int digit=num%10;了,所以我直接去掉括号中的多余的,变成

for(;num>0;){}

有同志就疑问了,既然能简略,那我?变量条件?能不能也在for外面就定义好,答案是当然,那我们的for就会变成

for (;;){}

那么分号能不能直接去掉呢,答案是不能的哈,分号在这边代表它三要素齐了,不然又该报非法表达的错了

当然,其实也不用那么麻烦,把for改成while就行

public class NarcissisticNumber {
    public static void main(String[] args) {
        for (int i = 100; i < 1000; i++) {
            int sum = 0;
            int num = i;

            while (num > 0) {
                int digit = num % 10;
                sum += digit * digit * digit;
                num /= 10;
            }

            if (sum == i) {
                System.out.println(i);
            }
        }
    }
}

只是因为本节是for循环的学习,所以我们以此为例,while循环会在下一节讲解。

二、狗的岁数转化成人的年龄

之所以会报‘错误: 不兼容的类型: 从double转换到float可能会有损失
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? age = years*10.5;’是因为我们在使用浮点数时要在数字后面加f,当然years也要是浮点数。如下:

import java.util.Scanner;

public class dogAge {
    public static void main(String[] args) {
        float years;
        System.out.println("请输入您的狗的年龄:");
        Scanner scanner = new Scanner(System.in);
        years = scanner.nextFloat();
        System.out.println("狗狗" + years + "岁了");

        if (years > 0) {
            float age;
            if (years <= 2) {
                age = years * 10.5f;
            } else {
                age = 2 * 10.5f + (years - 2) * 4;
            }
            System.out.println("相当于人类" + age + "岁");
        } else {
            System.out.println("年龄不合理,请重新输入!");
        }
    }
}

文章来源:https://blog.csdn.net/qq_67315010/article/details/135059906
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。