シンボルを見つけられません
間があきましたが、今回遭遇したエラーについてのメモ。
【エラー版】
//引数を渡す値が複数の場合
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っつーシステムを使った文字の結合処理をする際に¥を数値と結合ってどうすればいいんやー!!
とかやっていた時期がありました。(笑)
懐かしい思い出です。
まずは、サンプルソースを使ってみます。
一見文字化けに見える□は、バックスペースというのだそうです。
初めて知りました。
次に、自分で文章を考えてみます。
今月は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");
}
}
結果はこちら。
printを使っているので、
「今月はバレンタインご褒美チョコはどれにしようか」が結合されているはずですが、
\nを入れることで改行を入れて表示をさせるようにしてみました。
今回は書式子エラー等がなかったので、かなりさくさくできたと思います。
備忘録
よくつかうエスケープシーケンス
\" シングルクオート
\' ダブルクオート
\\ 文字
\n 改行
1/256 画面に文字を出力
初めてプログラムを扱うときの定番中の定番。
画面に文字を表示を行ってます。
今回表示させたい文字はこちら。
「宣誓! 我々は、スポーツマンシップにのっとり正々堂々、256本のノックを受けることを誓います」
まず、表示結果から。Eclipseのコンソール画面から抜粋。
【ソース】
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);
実行すると、エラーが発生します。
【エラーメッセージ】
宣誓! 我々は、スポーツマンシップにのっとり
正々堂々、Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.Double
エラー内容は、ざっくりいうと、型の相違です。
調べてみると、書式子が異なるため発生するエラーとのこと。
%dが、int型の結果を出力をするため、Numberをdouble型に変えたことで、型の相違が発生し、エラーが起こったようです。
そのため、書式子をdouble型を表す%f に変えると、エラーが除去されます。
結果も整数値256ではなく、256.000000になっていることがわかります。
備忘録
書式子がなにかわからないため宿題。
昔落としたJavaが使えない。
なぜだ。。。
脇汗カーディガンでひた隠し
続けられない小心者。X回目のチャレンジ。