当前位置: 首页 > 面试题库 >

声明无用的局部变量

程鸿煊
2023-03-14
问题内容

所以这很奇怪,我知道代码本身是没有用的,但是我想知道为什么会收到错误:

我正在写一些代码,我已经写了这个:

if(scan.hasNextInt())
    int row = scan.nextInt();

当时没有考虑可变范围,显然这是没有用的,因为无论如何我都无法使用row过去if。我没有得到的是为什么我得到了我的错误:

> javac hw.java
hw.java:25: '.class' expected
    int row = scan.nextInt();
        ^
hw.java:25: not a statement
    int row = scan.nextInt();
    ^    
hw.java:25: illegal start of expression
    int row = scan.nextInt();
            ^
hw.java:25: ';' expected
    int row = scan.nextInt();
                  ^

现在,如果我将其修改为:

if(scan.hasNextInt()) {
    int row = scan.nextInt();
}

它将编译正常。我给人的印象是,如果if大括号下有1行是可选的……显然,还有其他考虑,或者两者都会编译或失败。

有人可以向我解释一下,还是可以指向一个文档解释我为什么不能在if没有大括号的情况下声明局部变量?

编辑: 这是完整功能:

public static char getinput() {
    System.out.println("Where do you want to go? (row column)");
    Scanner scan = new Scanner(System.in);
    if(scan.hasNextInt())
        int row = scan.nextInt();
    String input = scan.next();
    System.out.println(input);
    return 'a';    
}

问题答案:

如果你有ifforwhiledo/while你必须用一个声明遵循它。声明不是声明。

从JLS
14.9
起-if语句

IfThenStatement:
    if ( Expression ) Statement

IfThenElseStatement:
    if ( Expression ) StatementNoShortIf else Statement

IfThenElseStatementNoShortIf:
    if ( Expression ) StatementNoShortIf else StatementNoShortIf

我假设他们这样做是因为您声明的任何变量都无法使用,因为它会立即超出范围(相同的声明除外)



 类似资料:
  • 局部变量使用关键字 def 来声明,其只在声明它的地方可见 . 局部变量是 Groovy 语言的一个基本特性. 例子 13.2 . 使用局部变量 def dest = "dest" task copy(type: Copy) { form "source" into dest }

  • 我得到了一个问题,对内部类的局部变量访问需要声明为final。从方法createGrids()->“”中,i是一个需要声明为final的局部变量。我不知道为什么,我在字段中添加了final,但它并不起作用。 //略

  • 我有以下一段代码在我的程序,我正在运行SonarQube 5的代码质量检查后,它与Maven集成。 然而,Sonar要求删除这个对局部变量“session”的无用赋值。

  • 问题内容: 我想制作一个可以在整个应用程序中访问的自定义对象的全局数组(AppDelegate,ViewController类,TableViewController类等)。我已经研究了一种解决方法,但没有找到答案。我曾尝试将数组设置为公共范围,但是收到了编译器警告,提示当我尝试在其他文件中访问该数组时,出现错误提示 我将如何使该数组可被应用程序中的所有文件全局访问,我将在哪里实例化该数组? 问题

  • 我在网上搜索声明局部变量的方法,偶然发现了这个Oracle页面。该页面谈到了使用关键字“VAR”。 我正在使用IntelliJ,我相信我正确地将我的项目设置为使用“VAR”,但它不能正常工作。你知道我做错了什么吗? 在项目语言水平上,我也尝试了10个但没有区别。

  • 问题内容: 我只想在多个地方使用a :不仅是视图和控制器,而且还包括和其他配置文件。 我不想要这样的事情:使用Config类加载配置文件;使用CI 等。 我只想声明一个给定的(它可以是一个常数,但我需要将它作为一个变量),并在所有地方绝对使用它。 实际上…我想知道CI引导程序中哪个PHP文件是第一个要解析的文件,因此我可以在其中引入我的全局变量…但不是核心/系统或不适当的文件,而是“最佳”适合此简