对于我的Java类,要求我们在working For语句中添加分号,并解释为什么输出是这样的。我不明白为什么添加分号会产生错误的树类型错误,导致代码无法编译。代码下面是输出;我还向any标记添加了反斜杠,因为它不会以其他方式显示。那么,为什么for语句后面的分号会导致这样的错误呢?提前谢谢。
package fordemo;
import java.util.Scanner;
public class ForDemo {
public static void main(String[] args) {
{
Scanner user_input = new Scanner(System.in);
System.out.println("Input a number:");
int number = user_input.nextInt();
for (int n = 1; n <= number; n += 2) ;
System.out.print(n + " ");
}
}
}
运行时间:
Input a number:
9
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code -
Erroneous tree type: <\any>\
at fordemo.ForDemo.main(ForDemo.java:35)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
你的for循环没有主体
for (int n = 1; n <= number; n+=2 ); // execute and exit and nothing do
然后调用System.out.print(n " ");
,n
在这里不可见。因为您是从该变量的范围之外调用它的
您可以按如下方式使用
for (int n = 1; n <= number; n+=2 ) {
System.out.print(n + " ");
}
我重新格式化了您的代码(仅限空格更改)以使其可读。
package fordemo;
import java.util.Scanner;
public class ForDemo {
public static void main(String[] args) {
/* Question 2 */
{
Scanner user_input = new Scanner(System.in);
System.out.println("Input a number:");
int number = user_input.nextInt();
for (int n = 1; n <= number; n+=2 );
System.out.print(n + " ");
}
}
}
问题现在应该很明显了。
n
不在范围内。
您正在使用临时设置
...for循环
;for(int n=1; n
尝试更像。。。
for (int n = 1; n <= number; n+=2 ) {
System.out.print(n + " ");
}
问题内容: 遇到一个错误地使用 而不是 在其代码中的人,它没有显示为编译错误。 是因为 是相同的 ? 问题答案: 没有编译错误,因为它是有效的(尽管相当无用) 一元运算符 ,其使用方式与以下方式相同: Java语言规范中的相关部分是Unary Plus运算符+(第15.15.3节) 。它指定调用一元运算会导致操作数的一元数值提升(第5.6.1节)。这意味着: * 如果操作数是编译时类型的,,,或,
我想遍历选项的列表。如果其中有一个值,我想返回一个错误。下面是一个人为的例子: 添加另一个分号会导致错误,但删除分号不会导致错误。 为什么return语句后面的分号是可选的? 习惯用法Rust应该使用哪种形式:分号还是不使用分号?这两种方法都被编译器接受,并且似乎产生相同的结果。
问题内容: 我经常在调试程序时发现在代码块中插入return语句很方便(尽管可能是不好的做法)。我可能会在Java中尝试类似的方法.... 当然,这会产生编译器错误。 Test.java:7:无法访问的语句 我能理解为什么警告是合理的,因为有未使用的代码是不好的做法。但是我不明白为什么这需要产生一个错误。 这只是Java试图成为一个保姆,还是有充分的理由使它成为编译器错误? 问题答案: 因为无法到
根据SQL字符串组合文档,我想在postgresql数据库中执行DELETE语句: 这将导致以下错误: 另一方面,类似的execute工作正常: 我真的看不出有什么区别...
我尝试在编译器中运行此代码,它给出了“circle”的输出: 我没有将打印功能设置为虚拟,但它仍然具有相同的效果。这有什么原因吗?
我使用比较器对流进行排序,遇到了一个我不理解的编译器错误。 假设我有以下课程: 我正在创建两个比较器,以按日期对s进行排序,一个按自然顺序,另一个按相反顺序。编译以下代码: 意识到是在上定义的,我想我会尝试以下操作: (对我来说)令人惊讶的是,rev2的代码编译正常,而rev1的代码产生以下错误: 为什么我会收到这些编译器错误?为什么我可以在从构建时有效地规避它们? (如果相关的话,我正在使用Ec