猫をだまして飛んで行く。

今興味があること・アニメの考察・映画感想などを投稿しています。

シンボルを見つけられません

 

間があきましたが、今回遭遇したエラーについてのメモ。

 

 

【エラー版】

//引数を渡す値が複数の場合

public class Main{

          public static void main (String args){

                    add(100,20);

                    add(200,50);

}

//複数の値を受け取るaddメソッド

public static void add(int x,int Y){

          int ans = x + y ;

          System.out.println(x + "+" + y + "=" + ans);

    }

}

 


↑プログラムを実行すると、エラーが発生する。

シンボルを見つけられません シンボル: 変数 y 場所: クラス Main


原因は、addメソッドの2つの引数を受け取る変数がint Yと定義されているが、

addメソッドにて実際に処理をする引数がint y と定義されているため発生。

受け取った変数と処理をする変数が異なるため、値が見つからない!

と怒られている。

 

【今回の解消方法】
引数のint Y を int yにすれば解消される。

※受け取る引数と処理する引数の値を一意にする

 

【修正版】

 

  //引数を渡す値が複数の場合

public class Main{

          public static void main (String args){

                    add(100,20);

                    add(200,50);

}

//複数の値を受け取るaddメソッド

public static void add(int x,int y){

          int ans = x + y ;

          System.out.println(x + "+" + y + "=" + ans);

     }

}

 

2/256 エスケープシーケンスを使ってみる。

昔々、プログラムについてろくに勉強をしていなかった時期にAsteriaっつーシステムを使った文字の結合処理をする際に¥を数値と結合ってどうすればいいんやー!!
とかやっていた時期がありました。(笑)

懐かしい思い出です。

まずは、サンプルソースを使ってみます。

 

 

f:id:shionsamidare-0211:20180206234951p:plain

 一見文字化けに見える□は、バックスペースというのだそうです。
初めて知りました。

 

次に、自分で文章を考えてみます。
今月は2月なので、バレンタインなので、自分チョコの購入予算を表示させてみたいと思います。


【サンプル】
public class EscapeSample {

public static void main(String[] A00) {
String month = "今月はバレンタイン\n";
String title = "ご褒美チョコはどれにし

 

ようか\b";

System.out.print(month + title);

System.out.print("購入予算は\\3500");
}

}

 

結果はこちら。

f:id:shionsamidare-0211:20180206234716p:plain 

 
printを使っているので、
「今月はバレンタインご褒美チョコはどれにしようか」が結合されているはずですが、
\nを入れることで改行を入れて表示をさせるようにしてみました。

 今回は書式子エラー等がなかったので、かなりさくさくできたと思います。

 

  

備忘録

よくつかうエスケープシーケンス

\"   シングルクオート
\'    ダブルクオート
\\    文字
\n   改行

1/256 画面に文字を出力

初めてプログラムを扱うときの定番中の定番。

画面に文字を表示を行ってます。

 

今回表示させたい文字はこちら。

「宣誓! 我々は、スポーツマンシップにのっとり正々堂々、256本のノックを受けることを誓います」

 

 

まず、表示結果から。Eclipseのコンソール画面から抜粋。

 

f:id:shionsamidare-0211:20180205061729p:plain

【ソース】

public class OutLine {
public static void main(String[] a00) {
int Number = (int)Math.pow(2, 8);
System.out.println("宣誓! 我々は、スポーツマンシップにのっとり");
System.out.printf("正々堂々、%d本のノックを受けることを誓います。", Number);
}

 

int Number に型変換して、powで計算したべき乗の結果を入れて、画面に出力をしています。

次に、3行目を変えて型をdoubleに変えてみます。

double Number = Math.pow(2, 8);

 

実行すると、エラーが発生します。

f:id:shionsamidare-0211:20180205063248p:plain

 

【エラーメッセージ】

宣誓! 我々は、スポーツマンシップにのっとり
正々堂々、Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.Double

 

エラー内容は、ざっくりいうと、型の相違です。

調べてみると、書式子が異なるため発生するエラーとのこと。

 

%dが、int型の結果を出力をするため、Numberをdouble型に変えたことで、型の相違が発生し、エラーが起こったようです。

そのため、書式子をdouble型を表す%f に変えると、エラーが除去されます。

結果も整数値256ではなく、256.000000になっていることがわかります。

 

f:id:shionsamidare-0211:20180205064057p:plain

 

 

備忘録

書式子がなにかわからないため宿題。

 

今日からお世話になる愛のJava256本ノック

唐突ですが、私は勉強ができない人です。

正確に言えば、集中するということができない人間です。

 

が、どうしてもモノづくりをしたくてプログラマになった人間です。

だけど、写経がつづかない(オワタ)

 

現場に入り、自分の書けないぶりにブラウスの脇が汗まみれになっているので、

それを軽減すべくお世話になろうと思います。

 

ソシャゲの誘惑に日々負けている人だけど、続けてまむっと続けてみたいと思います。

ロード・エルメロイⅡ世は本当にすごい。。。

 

 

話は変わりますが、Eclipse先生重すぎやしませんかね(涙)

開発予定でかっていない私の2GBのノートパソコン先生はメモリ量が日々半死反生です。