はなたの日記

プログラミング(C言語)の勉強をしています。超初心者です。

ITP1_5_B Print a Frame

問題
Print a Frame | Aizu Online Judge

問題自体は大したことないのですが、一つ勉強になったことがあったので、ブログを書いています。
最初にコンパイルした際は、「jが宣言されてないよ」というエラーが発生しました。
そんな馬鹿なしっかり宣言しているじゃないか、と思いましたが、調べてみると変数宣言にこんなルールが。

d.hatena.ne.jp

if文などの分岐で初期化がされない場合は、上記のようなエラーが出るらしいです。なので、今回は二か所でjの宣言をしています。

import java.util.Scanner;

public class itp_5_b {
	public static void main(String[] args){
		Scanner scan=new Scanner(System.in);
		
		while(true){
     		int H=scan.nextInt();
	    	int W=scan.nextInt();
		    if(H==0 && W==0)break;
			
			for(int i=0;i<H;i++){
				
				if(i==0 || i==H-1){
					for(int j=0;j<W;j++)System.out.print("#");
					System.out.println();
				}
				
				else {
					for(int j=0;j<W;j++){
						if(j==0 || j==W-1)System.out.print("#");
						else System.out.print(".");
					}
					System.out.println();
				}
				
			}
			System.out.println();
		}
	}
}

細かい所でc言語と違っていて、非常にイライラします。