2011-11-16 60 views
-6

我得到'其他'沒有'如果'錯誤。 請幫忙,謝謝我得到'其他'沒有'如果'錯誤

class MyGraphics 
{ 
    FrameBuffer fb; 
    int x, y; 
    private int width, height; 
    MyGraphics(int wid, int hit) 
    { 
     fb= new FrameBuffer(wid,hit); 
     width = fb.getWidth(); 
     height = fb.getHeight(); 
    } 
    MyGraphics() 
    { 
     fb = new FrameBuffer(); 
     width = fb.getWidth(); 
     height = fb.getHeight(); 
    } 


    void drawLine(int x1, int y1, int x2, int y2){ 
    int x0; 
    double y0 = y1; 
    double slope = (double)(y2 - y1)/(double)(x2 - x1); 

    if (x2 < width && y2 < height) 
    { 
     for (x0 = x1; x0<=x2; x0++) 

     y0=y0+ slope; 
    } 

    fb.setPixel(x0, ((int)y0)); 

    else if(x2 < width && y2 >= height) 
    { 
     for(y0=y1,x0=x1; (int)y0< height; x0++) 
      y0 = y0 + slope; 
    } 
    fb.setPixel(x0, ((int)y0)); 

    else if(x2 >= width && y2 <height) 
    { 
     for (x0 = x1; x0 < width; x0++) 
     y0=y0+ slope; 
    } 
    fb.setPixel(x0, ((int)y0)); 

    else 
    { 
     for(x0=x1; x0 < width && (int)y0 < height;x0++) 
      y0 = y0 + slope; 
     fb.setPixel(x0, ((int)y0)); 
    } 

    return; 
} 
void display() 
{ 
    fb.display(); 
    return; 
} 

} 
+2

如果你想讓你的代碼清晰正確地縮進,那就很明顯了。你錯過了一個}。 – Stellarator

+0

請正確縮進你的代碼,你就會知道這個問題。 –

+5

爲什麼所有的downvotes?我們不能***所有***錯了...... – Mysticial

回答

1

你錯過了最初的,如果後一個右括號...

但是你的編譯器應該告訴你到底去哪裏找。

您有多個支架問題......如果您使用IDE,請嘗試讓它的代碼格式化,或者至少突出顯示匹配的括號。這應該有助於縮小問題範圍。

1

的問題是在這裏:

if (x2 < width && y2 < height) 
{ 
    // if body 
} 
fb.setPixel(x0, ((int)y0)); 
else if(x2 < width && y2 >= height) // this else has no matching if. 
0

你檢查寬/高值,也沒有你的代碼編譯?您缺少}後,如果

2

這是你的代碼看起來是正確的縮進後:

if (x2 < width && y2 < height) 
{ 
    for (x0 = x1; x0<=x2; x0++) 
     y0=y0+ slope; 
} 
fb.setPixel(x0, ((int)y0)); 

/* THIS ELSE HAS NO MATCHING IF */ 
else if(x2 < width && y2 >= height) 
{ 
    for(y0=y1,x0=x1; (int)y0< height; x0++) 
     y0 = y0 + slope; 
} 
fb.setPixel(x0, ((int)y0)); 

/* NEITHER DOES THIS ONE */ 
else if(x2 >= width && y2 <height) 
{ 
    for (x0 = x1; x0 < width; x0++) 
    y0=y0+ slope; 
} 
fb.setPixel(x0, ((int)y0)); 

/* NOR THIS ONE */ 
else 
{ 
    for(x0=x1; x0 < width && (int)y0 < height;x0++) 
     y0 = y0 + slope; 
    fb.setPixel(x0, ((int)y0)); 
} 
+0

有些downvoter認爲那些'else'確實有匹配的'if' ...? –

1

您指定的錯誤(else沒有if)是完全正確的。看看你的代碼:

if (x2 < width && y2 < height) { 
    for (x0 = x1; x0<=x2; x0++) 

    y0=y0+ slope; 
    } 

    fb.setPixel(x0, ((int)y0)); 

else if(x2 < width && y2 >= height) 

在這裏,你y0 = y0 + slope結束後,您的if發言,並做fb.setPixel之後。當你到達else if時,沒有匹配的if,因爲你已經結束它並在它後面執行語句。

1

問題由別人解決。

這裏是我的2點建議:

  1. 使用「標籤」,使您的代碼更好看。
  2. 當涉及括號問題時,請務必首先鍵入「{」和「}」,然後在它們之間添加內容。那麼你再也不會得到這種錯誤了。

這些是我的方法,你可以使用它們,如果有用的話。

更重要的是,您可以使用IDE。事情會好得多。大多數IDE的默認設置就足夠了。

相關問題