Java 是否从不读取局部变量名?我该怎么办?

Java 是否从不读取局部变量名?我该怎么办?,java,Java,它有一个注释,说明永远不会读取局部变量名。请帮忙我快做完了:谢谢你的帮助。我正在使用Dr.JavaIDE import java.util.Scanner; public class information { public static void main(String[] args) { Scanner input = new Scanner(System.in); String name ; String course;

它有一个注释,说明永远不会读取局部变量名。请帮忙我快做完了:谢谢你的帮助。我正在使用Dr.JavaIDE

import java.util.Scanner;

public class information {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String name ;
        String course;
        char gender;
        int yearLevel;
        int age;

        System.out.print("Enter your name: ");
        name  = input.nextLine();


        System.out.print("Enter your gender [M/F]: ");
        gender  = input.nextLine().charAt(0);

        while(gender!= 'M' && gender!= 'F'){
            System.out.println("Error: type only M or F");
            System.out.println("Re-enter your gender [M/F]: ");
            gender  = input.nextLine().charAt(0);
        }


        System.out.print("Enter your course: "); // BSCS, BSIT or BSIS
        course  = input.nextLine();

        while( course.equals("BSCS") || course.equals("BSIT") || course.equals("BSIS")){
            System.out.println("Error: type only BSCS,BSIT, or BSIS");
            System.out.println("Re-enter your course: ");
            course = input.nextLine();
        }

        System.out.print("Enter your year level: ");/// 1 to 4
        yearLevel  = input.nextInt();

        while((yearLevel<4 || yearLevel>1) )
        {
            System.out.print("you entered wrong year level(re-enter):");
            yearLevel  = input.nextInt();
        }

        System.out.print("Enter your age: ");
        age  = input.nextInt();

        while((age>=16) )
        {
            System.out.print("you entered wrong year level(re-enter):");
            yearLevel  = input.nextInt();
        }


    }

    System.out.println();
    System.out.println("Student Information");
    System.out.printf("%s (%c)\n", name, gender);
    System.out.printf("%d years old\n", age);
    System.out.println(course + "-" + yearLevel);



}

真正的问题是,为什么要设置变量而从不使用其值。如果你真的不需要它,就把它拿走。如果您确实需要它,显然您在程序中遗漏了一些内容。

唯一的错误是

System.out.println();
System.out.println("Student Information");
System.out.printf("%s (%c)\n", name, gender);
System.out.printf("%d years old\n", age);
System.out.println(course + "-" + yearLevel);
应该位于main方法内部,而不是类块中,它必须位于name变量上

你有分配给它的东西。但在为其赋值后,您没有在其他任何地方使用它。由于它未被使用,IDE只会通知您它未被使用

另一个主要原因是在定义name变量的方法中有print语句。将它们移动到方法中,警告就会消失

更改:

    }

    System.out.println();
    System.out.println("Student Information");
    System.out.printf("%s (%c)\n", name, gender);
    System.out.printf("%d years old\n", age);
    System.out.println(course + "-" + yearLevel);

}
致:


println语句在main之外。代码应该是这样的:

import java.util.Scanner;

public class information {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String name ;
        String course;
        char gender;
        int yearLevel;
        int age;

        System.out.print("Enter your name: ");
        name  = input.nextLine();


        System.out.print("Enter your gender [M/F]: ");
        gender  = input.nextLine().charAt(0);

        while(gender!= 'M' && gender!= 'F'){
            System.out.println("Error: type only M or F");
            System.out.println("Re-enter your gender [M/F]: ");
            gender  = input.nextLine().charAt(0);
        }


        System.out.print("Enter your course: "); // BSCS, BSIT or BSIS
        course  = input.nextLine();

        while( course.equals("BSCS") || course.equals("BSIT") || course.equals("BSIS")){
            System.out.println("Error: type only BSCS,BSIT, or BSIS");
            System.out.println("Re-enter your course: ");
            course = input.nextLine();
        }

        System.out.print("Enter your year level: ");/// 1 to 4
        yearLevel  = input.nextInt();

        if(!(yearLevel<=4 && yearLevel>=1) )
        {
            System.out.print("you entered wrong year level(re-enter):");
            yearLevel  = input.nextInt();
        }

        System.out.print("Enter your age: ");
        age  = input.nextInt();

        while(!(age>=16) )
        {
            System.out.print("you entered wrong age(re-enter):");
            yearLevel  = input.nextInt();
        }
        System.out.println("");
        System.out.println("Student Information");
        System.out.printf("%s (%c)\n", name, gender);
        System.out.printf("%d years old\n", age);
        System.out.println(course + "-" + yearLevel);

        input.close();
    }

}


此外,年度级别的while循环有一个逻辑错误…

错误消息指的是哪个变量?另外,你确定你的课程阅读逻辑是正确的吗?目前发现的唯一错误是你的最后5个System.out.print语句不在任何方法内,也不在任何main方法内。尝试使用其他IDE编译它,或者简单地使用命令promptno,我不确定:请帮助我。错误是指字符串名称;使用命令提示符我该如何使用它?@emm算了吧。把最后一个括号移到代码行的末尾,我真的需要它。这是我在学校的一个要求,我根本不懂编程:为什么需要它?当你拿到它的时候,你该怎么处理它?你不是应该打印吗?不,我会把它通过电脑。我需要它,因为你的代码只写它。它不读它。你少了一张打印纸。如果您不应该打印它,请忽略警告。我想不同的IDE可能会显示不同的错误/警告while循环应该是:If!yearLevel=1,现在否决所有答案的人应该发表评论。@Ravinder问题是关于“局部变量永远不会被读取”的警告。事实上,@EJP,我不知道你为什么否决了每个人的答案,因为尽管作者说局部变量永远不会被读取,但他实际发布的代码却不是这样。海报的错误首先是,他没有对扫描仪输入调用close方法,其他错误是打印语句在主类之外。请,请不要否决人们的答案,如果他们真的帮助了海报。非常感谢。没有回答这个问题。这是关于“局部变量名称永远不会被读取”警告。由于需要System.out引用该名称变量,因此代码正在为名称变量生成错误variable@EJP这是什么课程?等于?鉴于我是第一个提到这一点的人,我将重新回复这个答案:@EJP,你不应该否决这一点。虽然他没有回答这个问题,但他确实指出了一些错误,是的,我发现了这些错误。我将继续投票,因为这个答案确实帮助了用户。
import java.util.Scanner;

public class information {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String name ;
        String course;
        char gender;
        int yearLevel;
        int age;

        System.out.print("Enter your name: ");
        name  = input.nextLine();


        System.out.print("Enter your gender [M/F]: ");
        gender  = input.nextLine().charAt(0);

        while(gender!= 'M' && gender!= 'F'){
            System.out.println("Error: type only M or F");
            System.out.println("Re-enter your gender [M/F]: ");
            gender  = input.nextLine().charAt(0);
        }


        System.out.print("Enter your course: "); // BSCS, BSIT or BSIS
        course  = input.nextLine();

        while( course.equals("BSCS") || course.equals("BSIT") || course.equals("BSIS")){
            System.out.println("Error: type only BSCS,BSIT, or BSIS");
            System.out.println("Re-enter your course: ");
            course = input.nextLine();
        }

        System.out.print("Enter your year level: ");/// 1 to 4
        yearLevel  = input.nextInt();

        if(!(yearLevel<=4 && yearLevel>=1) )
        {
            System.out.print("you entered wrong year level(re-enter):");
            yearLevel  = input.nextInt();
        }

        System.out.print("Enter your age: ");
        age  = input.nextInt();

        while(!(age>=16) )
        {
            System.out.print("you entered wrong age(re-enter):");
            yearLevel  = input.nextInt();
        }
        System.out.println("");
        System.out.println("Student Information");
        System.out.printf("%s (%c)\n", name, gender);
        System.out.printf("%d years old\n", age);
        System.out.println(course + "-" + yearLevel);

        input.close();
    }

}