2011-11-16 7 views
-6

'else'に 'if'エラーが表示されません。 助けてください、あなたがもし、最初の後に閉じ括弧が欠落している'else'に 'if'エラーがない場合

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'sが' if'と一致すると信じていますか? –

1

あなたが指定したエラー(elseifなし)。あなたのコードを見てください:

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のデフォルト設定で十分です。

関連する問題