[英]colon expected error, colons? not semicolons?
代碼:
import ------.*;
public class Assignment2 {
enum Picture {BACKGROUND, LEGS, BILL, BODY, EYE}
public static void main (String [] args) {
//Constants
final int SIDE = 130;
final int SCALE = 2;
//The array
Picture [][] duck = new Picture [SIDE][SIDE];
//Read in the informations
EasyReader input = new EasyReader("duck.txt");
for (int r = SIDE-1; r >=0; r--) //top row first
for (int c=0; c<SIDE; c++) {
int i = (int)input.readChar();
if ( i % 2 == 0 )
if ( i % 22 == 0 )
duck[r][c] = Picture.EYE;
else
duck[r][c] = Picture.BACKGROUND;
else if ( i % 7 == 0 )
duck[r][c] = Picture.BILL;
else if ( i % 5 == 0 )
duck[r][c] = Picture.LEGS;
else
duck[r][c] = Picture.BODY;
}
//Display it
EasyGraphics window = new EasyGraphics(SIDE*SCALE*2,SIDE*SCALE*2);
//sky
window.setColor(100, 200, 255);
window.fillRectangle(0,SIDE*3,SIDE*SCALE*2,SIDE);
//grass
window.setColor(100,200,0);
window.fillRectangle(0,SIDE,SIDE*SCALE*2,SIDE*2);
//River
window.setColor(0,100,100);
window.fillRectangle(0,0,SIDE*SCALE*2,SIDE);
//The ducks
for (int r=0; r <SIDE; r++)
for (int c=0; c<SIDE; c++)
if ( duck[r][c] != Picture.BACKGROUND ) {
//set the colour
switch ( duck[r][c] ) {
case EYE -> window.setColor(0,0,0);//black
case BILL -> window.setColor(255,0,0);//red
case LEGS -> window.setColor(100,100,0);//brown
case BODY -> window.setColor(200,200,0);//yellow
}
//top left duck
window.fillRectangle(c*SCALE,SIDE*SCALE+r*SCALE,SCALE,SCALE);
//bottom right duck
if ( duck[r][c] != Picture.LEGS )
window.fillRectangle(SIDE*SCALE+c*SCALE,r*SCALE,SCALE,SCALE);
//small top right duck
window.plot(SIDE*SCALE+SIDE/2+c,SIDE*SCALE+SIDE/2+r);
//small duck in the middle
window.plot(2*SIDE+SIDE/2-c,SIDE+SIDE/2+r);
}
}
}
錯誤信息:
Assignment2.java:50: error: : expected
case EYE -> window.setColor(0,0,0);
^
Assignment2.java:52: error: : expected
case BILL -> window.setColor(255,0,0);
^
Assignment2.java:54: error: : expected
case LEGS -> window.setColor(100,100,0);
^
Assignment2.java:56: error: : expected
case BODY -> window.setColor(200,200,0);
^
4 errors
編輯:
我正在使用:javac 11.0.13
我使用 atom 編輯器和 vs-code 編輯器。
代碼是教師給我們的過去作業的可能解決方案之一。 除了刪除 package 的名稱之外,我沒有進行任何更改。 我嘗試使用終端對其進行編譯,但收到一條錯誤消息,提示我需要使用冒號來切換命令,但我不明白為什么? 不應該是分號嗎?
不久前,我嘗試了很多方法來解決這個問題。 我刪除了 switch 命令的注釋,並嘗試將注釋移至新行,並嘗試再次重寫命令(僅是問題所在的部分)等等。 不知何故,問題已解決,但我不記得是什么解決了問題。 我沒有更改任何代碼。 (我現在沒有那個文件。)
switch ( duck[r][c] ) {
case EYE -> window.setColor(0,0,0);//black
case BILL -> window.setColor(255,0,0);//red
case LEGS -> window.setColor(100,100,0);//brown
case BODY -> window.setColor(200,200,0);//yellow
}
是 Java 中引入的 Java 開關表達式12. Pre-Java-12 它會寫成一個開關語句:
switch ( duck[r][c] ) {
case EYE: window.setColor(0,0,0); break;
case BILL: window.setColor(255,0,0); break;
case LEGS: window.setColor(100,100,0); break;
case BODY: window.setColor(200,200,0); break;
}
Switch 語句要求它們的 case 標簽后跟一個冒號。
請注意,switch 表達式返回一個 value ,而 switch 語句則沒有。 考慮以下:
String s = switch(i) {
case 1 -> "one";
case 2 -> "two";
default -> "more";
}
要實現等效行為,您必須重寫:
String convert(int i) {
switch(i) {
case 1: return "one";
case 2: return "two";
default: return "more";
}
}
String s = convert(i);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.