在for循环中,我试图为我的一个“tile”类更改数组变量的内容。我一直得到一个非法的开始表达错误,我无法弄清楚是什么出了问题。
首先,我将向您展示我的类和for循环。
class Tile {
int value;
int pos;
Tile[] adj;
public Tile(int value, int pos) {
this.value = value;
this.pos = pos;
}
}
和问题中的for循环:
public static void update(Tile[] arr) {
for(int i = 0; i < arr.length; i ++) {
Tile t = arr[i];
t.pos = i + 1;
if(i == 0)
t.adj = {arr[i]};
}
}
所以对于每个Tile,我都有一个名为adj的数组,但是编译器不允许我定义t.adj(其中t是Tiles的arr[]中的一个Tiles)。它告诉我第一个‘{’花括号是不合法的表达式开头。
特别奇怪的是,我可以在它之前声明一个测试数组,这样编译器就不会出现任何错误:
if(i == 0) {
Tile[] testTile = {arr[i]};
t.adj = {arr[i]}; //compiler should know that this is an
array of tiles... but it doesn't?
}
测试块不会遇到任何错误,所以我知道这不是一个松散的分号的问题。我真的搞不清这两种说法有什么区别。我已经声明了adj是一个Tiles数组(根据Tile类)。我将变量t声明为方法的参数数组中正在处理的每个瓦片。
我尝试过使函数不是静态的,定义了adj[]数组的默认大小,但没有任何东西使编译器合作。我甚至试过设置t.adj=5;但我得到了这个错误:
Main.java:105: error: incompatible types: int cannot be converted to
Tile[]
t.adj = 5;
这向我证明了编译器将t.adj识别为tile[]类型。
我打破了什么神秘的Java规则,不允许编译器接受我写的东西???
Main.java:105: error: illegal start of expression
t.adj = {arr[i]};
^
Main.java:105: error: not a statement
t.adj = {arr[i]};
^
Main.java:105: error: ';' expected
t.adj = {arr[i]};
^
Main.java:112: error: class, interface, or enum expected
声明变量时只能单独使用数组初始值设定项语法。在本例中,您将在赋值表达式中使用它来赋值现有变量,因此需要使用数组创建表达式:
t.adj = new Tile[] { arr[i] };
我不明白第77行不能从这个开始,但我用“public String showTrack()”开始了类似的内容。 这是我当前的代码:
我正在从其他框架生成一个JTabbedFrame。
我基本上是在精炼、完成并尝试从java初学者参考书中编译测试代码。目标是创建一个猜测游戏,其中目标位于3个连续的单元中(我在阵列中保留位置),用户猜测单元号以逐个单元摧毁目标单元。 我在这里查看了六篇关于同一个错误的帖子,但我不知道出了什么问题。 这是我的错误: 我的代码是:
为什么我会得到:非法的表达式开始-公共静态int noOfLetters(String str){error?我如何修复它?
喂!我开始学习编程,并从一个奇怪的计算器的方式开始(我知道它的奇怪我是如何做的)。但在这段小代码中,我遇到了Java的一个问题:表达式的非法开始是因为“if(numberTest.equals(+))”,但当我输入“if(numberTest==/)”时,也会出现一个错误。有没有帮助解决这个问题,因为我没有找到任何东西,不知道该搜索什么?(:祝你们今天愉快!保重!)
问题内容: 我基本上是在完善,完成并尝试从Java初学者的参考书中编译测试代码。目的是创建一个猜谜游戏,其中目标位于3个连续的单元格中(我将位置保持在数组中),而用户则猜测该单元格的编号。逐个摧毁目标细胞。 我在这里检查了六则关于同一错误的帖子,但我无法弄清楚出了什么问题。 这是我的错误: 我的代码是: 问题答案: 方法只能声明局部变量。这就是为什么当您尝试将其声明为public时,编译器会报告错