if- else if问题

if-else if问题

import java.util.Scanner;
class test2{
public static void main(String[] args){
System.out.println("请输入您爱宠的年龄:");
Scanner sc1 =new Scanner(System.in);
int dogAge = sc1.nextInt();
if(dogAge > 0 && dogAge <= 2);{
double realAge = 10.5 * dogAge;
System.out.println("狗狗的实际年龄"+realAge);}
else if(dogAge > 2);{
double realAge = 10.5 * 2 + (4 * (dogAge - 2));
System.out.println("狗狗的实际年龄"+realAge);}
else if(dogAge > 30 || dogAge < 0);{
System.out.println("您输入的年龄有误");}

}

}
这里编译不通过,提示说else用法有误.

import java.util.Scanner;
public class test2 {
    public static void main(String[] args) {
        System.out.println("请输入您爱宠的年龄:");
        Scanner sc1 = new Scanner(System.in);
        int dogAge = sc1.nextInt();

        if (dogAge > 0 && dogAge <= 2) {
            double realAge = 10.5 * dogAge;
            System.out.println("狗狗的实际年龄" + realAge);
        } else if (dogAge > 2 && dogAge <= 30) {
            double realAge = 10.5 * 2 + (4 * (dogAge - 2));
            System.out.println("狗狗的实际年龄" + realAge);
        } else if (dogAge > 30 || dogAge < 0) {
            System.out.println("您输入的年龄有误");
        }
    }
}

错误:
1、if 和 else if 判断条件的括号()和后面的中括号 {} 之间不能有分号;
2、第 3 个判断语句的前半部分 dogAge > 30 是一直是 false 的,因为第 2个判断语句 dogAge > 2 已经包括了 dogAge > 30,我将条件改进了一下,这样,第 2else if 的判断内容就有点多余了,去掉后换成 else 反而更简洁,如下

import java.util.Scanner;
public class test2 {
    public static void main(String[] args) {
        System.out.println("请输入您爱宠的年龄:");
        Scanner sc1 = new Scanner(System.in);
        int dogAge = sc1.nextInt();

        if (dogAge > 0 && dogAge <= 2) {
            double realAge = 10.5 * dogAge;
            System.out.println("狗狗的实际年龄" + realAge);
        } else if (dogAge > 2 && dogAge <= 30) {
            double realAge = 10.5 * 2 + (4 * (dogAge - 2));
            System.out.println("狗狗的实际年龄" + realAge);
        } else {
            System.out.println("您输入的年龄有误");
        }
    }
}

每个判断后面的分号是不是有点多余😿

应该是if和else if后面的分号的错吧

img