当前位置: 首页 > 知识库问答 >
问题:

无法解析变量(if else语句中使用的变量)[duplicate]

仲孙超
2023-03-14

我只是在学习编码,所以我遇到了“k不能解决”的问题。

我以前尝试过引入变量,如果运算符by:

double a = 2.1223;
int b = (int) a;

if(a-b > 0.5) { 
   int k = b + 1;
}

else { 
   int k = (int)b ;
}

System.out.println(k); // k cannot be resolved.why??

我预期输出为2

相反,无法解析got k

共有1个答案

洪俊拔
2023-03-14

问题在于您的实现。正如您所看到的,您在开头定义了k。但有趣的是你把它定义为“无”:

int k;

您定义的其他k在ifelse if函数中,不能被println()函数访问。这意味着您传递的是未定义要打印的内容。那肯定会导致一个错误。这就是XtremeBaumer所说的作用域。这意味着变量的属性定义了它们的可见性和可用性。

正确的方法是:

double a = 2.1223 ;
int b = (int) a ;

if(a-b > 0.5) { 
    k = b + 1;
}

else { 
    k = b; //No casting needed
}

System.out.println(k); 

这样,您就不会每次检查if或else if时都创建一个新的k变量。您所做的是再次使用k变量,只需说k=whatever。您的问题是通过执行int k再次创建了k变量。

此外,正如Andy Turner所指出的,您不需要将b强制转换为int,因为它已经是一个int。

 类似资料:
  • 问题内容: 我正在尝试创建一个查询,该查询将针对中的每个服务器中特定数据库中的特定表执行一次。 对于每个我想知道的内容。 所以我需要的是这样的: 然而,在似乎并不工作。 有什么建议吗?感谢您与我一起思考。 问题答案: 您必须使用动态sql: 这是有关exec的更多信息。

  • 出于某种原因,当我尝试运行这段代码时,它总是返回找不到符号。然后我发现问题是变量无法解析为变量。我不知道为什么它无法将其解析为变量。

  • 问题内容: 这可能很明显,但是当我试图强制用户继续输入值直到他输入有效值时,我收到一个错误,指出该变量无法解析。 然后,如果我事先声明它,则会收到一条错误消息,指出重复值。 在担心这个问题之前,编译器难道不应该先执行该语句吗? 问题答案: 在循环之前声明,使其作用域更像下面这样:

  • 在此输入图像说明 食物不能解析为变量

  • 好吧,我正在使用字典,例如: 然后我想做的基本上是说,如果“用户”(一个参数)的名称前面有“@”,那么将变量前缀分配为“@”,如果他们的名称前面有“~”,则将变量前缀分配为“~”,如果他们有“ 然后我想说,如果用户的名字前面有“%”,则将前缀变量设置为“%”,否则将其设置为“”(因为这些值只有两个键)。为此,我需要一个if语句,并将其与self进行比较。声音的价值。 分配前缀变量的当前代码 目前,

  • “帖子”、“标题”、“内容”下面总有红线,却不知如何解决。是IntelliJ的问题,还是仅仅是我的代码的问题?