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

文章讲述了在Java编程中修复非法表达式错误,如在for循环中正确设置变量条件,以及在处理浮点数类型转换时的注意事项。以水仙花数的查找和计算狗狗相对人类年龄为例进行讲解。
摘要由CSDN通过智能技术生成

一、打印出所有水仙花数

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

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("年龄不合理,请重新输入!");
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值