一、打印出所有水仙花数
之所以会报这个‘不是语句’、‘非法表达式’的错是因为
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("年龄不合理,请重新输入!");
}
}
}