初心者のJavaプログラミング

プログラミングガチ初心者がIT業界を目指して頑張ります。

【祝】Androidアプリ、リリース!

こんばんは!

本日アプリを公開しました!
といってもしょぼいアプリですがw

10進数を2,8,16進数にするアプリです。
とりあえず何か出しておきたかったなーと思って作りました!

コード自体は何も難しくないアプリですが、
アプリリリースってこんなに大変なんだと思いました。

まずスクリーンショット。最初撮り方分からなかったw
そんでアイコン画像とかアプリの画像とか。
サイズも決まっていて、
1024 x 500
とか
512 x 512
とかでした。
なんとか加工しました。

keystoreとかなんやらかんやらやりましたw

教科書見ながらググってました。ググる力って大事だと再確認w


どんな形であれアプリがリリースできたことに感動です!

今はもう別なアプリを作ってます。
お小遣い帳的なアプリと習慣付けのアプリを作ってます。

今回リリースしたアプリは、データベースもなんも使わないアプリなので、
今はデータベースを使うアプリに挑戦中です。


明日面接なので、靴を磨いて寝ようと思います!

おやすみなさい!

【Android】スピナー(Spinner)クラスのメモ

こんばんは。
スピナークラスの使い方ではまっていたというよりは、
Stringクラスに対して誤解が!w

null と 空文字って違うんですねw

String str1 = null;
String str2 = "";

この二つは違います。
Stringは参照型の変数なので、変数には実体ではなくてオブジェクトのある実体の番地が入っています。
str1は実体がないということなのでどこも参照していません。
それに対してstr2は空文字が入っています。一応実体があるのでnullじゃないってことです。

いい例えが浮かばないけど、
鉛筆がない = 鉛筆が0本ある
みたいな感じなのかなと。

昔々、どっかの数学者が何もないという状態を、0という数字があると表現したっていう話をふと思い出しました。
そんな感じなのかなーw


そんで、
変数に文字が入っているかどうかの判定とかすると思うんですが、

if(str2 == "ハローワールド")

ではなくて

if(str2.equals("ハローワールド"))

というようにequalsメソッドを使って判定しなくてはなりません。


これではまってましたw
スピナーで表示されている文字列の状態に応じて、処理を変えていこうと思っていて、
ずっとequalsメソッド使わないで == で判定してました。
Logだしても最後のelseにしか入ってこないなーと思って、
ぐぬぬー状態でした。

とりあえず解決したので、がんがん先に進もうと思います!

ではでは!

基本情報技術者資格試験お疲れさまでした

こんばんは。
情報処理技術者試験受けてきた方々お疲れさまでした。
青山学院大学で受けてきました。
きれいなとこでしたー!w

午前試験は問1でやや出鼻をくじかれました。
まあこういう系は後でやればいいだろうと思って問2に進みました。
問2の方がむずいじゃんw
こんなん後回しですw
なんやかんやで7割はいったと思います。

問題は午後です。
午後はデータベースをちょっとミスってしまいました。
あと問7の在庫のヤーツも。
問8アルゴリズムは満点でした。
2重ループでどんな風に比較されていくかをつかめたので、結構早めに終わりました。
そして問11のJava...

0点...

まじかよw
せめてa b cは当たってるだろと思ったけど、壮大な勘違いで全ミスw
笑えないっす。。。

何となく自分で配点予想して、計算してみたところ、
めっちゃ悪く見積もって57点、
良く見て63点くらいでした。

多分ギリ落ちてるかなぁ
残念無念


気を取り直して頑張ります!

明日は面接。帰りにOCJPの問題集でも買ってこようかな!

ではでは。

さぼりーの!

すみません。さぼってました。
厳密に言うとさぼっていた訳ではないのですが、
基本情報の勉強と就活をしていると、授業でやるAndroid開発の情報をまとめる時間がどうしてもなくなってしまっているのが現状です。
言い訳ですねw
更新頻度を増やしていきたいと思います!

10月19日は基本情報技術者資格の試験日です。
もうすぐなので集中していきます。
午後問題めっちゃ難しいし、そもそも時間ねーわ!w
とか思ってたんですけど、試験時間って2時間30分もあるんですね。
ずっと1時間30分しかないと思ってて、
選択問題5問を45分以内に終わらせて、残りをアルゴリズムJavaにあてる形でやってました。

てことで配分はこんな感じにすることにしました。
選択5問→1時間
アルゴリズム→30分
Java→30分
30分くらい余裕を見てますが、本番は緊張するからこんくらいのペースでやってった方がいいかなーっと思っています。

試験終わったらAndroidの開発と就活を本格的にしていく予定です。

あと、OCJPのシルバー?っていう資格取った方がいいって企業の方に言われたので取得します。
本屋で問題集見た感じだと、めちゃくちゃ簡単そうだったので今すぐにでも取れるわーと思ったのですが、
受験料を見て失神しかけました。
ボラクル...
お金がない私に取っては厳しいです。

とりあえず基本情報合格できるように残りの日数全力で頑張ります。

ではでは!

おひさです

こんばんは。
基本情報の午後試験って結構むずいんじゃねって思っている今日このごろですw
時間無制限だったら解けそうなんだけどねーw
言い訳ですねw
時間配分をしっかりしないとだなー!

というわけで、最近なかなかJavaのほうが更新できていません。
ちなみにJavaは一通り終わって、明日からAndroidアプリの開発に移っていくみたいです。
Androidアプリ開発しながら、基本情報やって、就活して
っていう感じです。
大変だなーとか思ったけど、仕事している人にとってはこれくらいできなきゃやってらんないぜ!って所ですよね!
うだうだ言ってないで頑張ります!

昨日から過去問ばっかりやってます!
それでは今日も過去問やってきまーす!

ではでは!

むむむ、throwむむむ

こんばんは。
throwの意味が良く分からんとですw

普通、例外が発生するとJVMが例外を生成します。
その例外をキャッチしてやればよい訳です。

throwの説明を見ると、
プログラム内で明示的に例外を生成するときに使う、
と書いてあります。

なんでわざわざ例外を作るのか...
よくわからないーーーーーーーーーーw

【第25回】初心者のJavaプログラミング【例外処理(try, catch)】

こんにちは。
最近鼻の調子が悪いです。
風邪か花粉か。イネ科のかもがや?っていう河原に生えているやつの花粉症なんですよね。だから、春と秋だと秋のほうがひどい傾向がるんですよねー。
あと、ほこりアレルギーっぽいので掃除すると具合悪くなりますw

ってことで今回は例外処理です。

例外とは

良く分からないので、とりあえず例外を出してみます。
0除算が手っ取り早いです。
整数を0で割ってしまってはだめなのです!

class ExceptionZeroJosan {
	public static void main(String[] args) {
		int a = 5;
		int b = 0;
		int c = a / b;
		System.out.println(c);
	}
}

文法的に正しいのでコンパイルは通りますが、
int c = a / b;
の行で実行時にエラーが出ます。

Exception in thread "main" java.lang.ArithmeticException: / by zero
といったエラーが表示されます。
ArithmeticExceptionクラスの例外オブジェクトが生成されていることを意味しています。

このように例外とは、プログラムの実行中に発生した問題を通知するために、実行時に生成されるオブジェクトのことです。

Javaではこの例外を、前もって準備しておいた処理ルーチンで処理することが出来ます。

例外処理の書き方

class ExceptionZeroJosan {
	public static void main(String[] args) {
		int a = 5;
		int b = 0;
		try { //< 例外が発生する恐れのある処理を書く
			int c = a / b;
			System.out.println(c);
		}
		catch(ArithmeticException ex) { //< 例外発生した時の処理
			System.out.println("0で割っちゃだめだよー");
		}
		finally { //< 必ず実行される
			System.out.println("終わり");
		}
	}
}

コンパイルして実行してみると、
"0で割っちゃだめだよー"
"終わり"
が表示されたと思います。

tryの中に例外が発生する恐れのあるコードを書いていきます。
0除算は例外が発生しそうというかします。
予定通り例外が発生して、ArithmeticExceptionクラスのオブジェクトが生成されました。
その例外がcatch(ArithmeticException ex)のexに引数として受け取っています。
その例外に対しての処理をcatchブロックの中に書いていきます。
catchは例外をキャッチ!って感じです。
そんで、finallyブロックですが、これは必ず実行されます。
tryで例外が発生しなかった場合でも、例外が発生した場合でも実行されるということです。
try文にretrunステートメントがあったとしても、すぐに関数を抜けずfinallyブロックの処理をします。ここがちょっと紛らわしいです。

例外オブジェクトに対応するcatchブロックがなかった場合

例外にも色々種類があって、

  • 0で除算した時等に発生する例外
  • 配列の範囲外を参照してしまった場合の例外

等です。
もし上の例で、配列の範囲外を参照してしまった場合の例外のオブジェクトをキャッチするようなコードを書いていた場合、せっかく例外をキャッチしようとしてもできません。

catch(ArithmeticException ex)となっている部分を
catch(ArrayIndexOutOfBoundsException ex) に変更してみて下さい。
例外はキャッチされずに、finallyブロックだけが実行されて終わります。

まあ、気をつけましょうってことです!w

(キャッチできなかった場合、呼び出し元のメソッド内のtryブロックのcatchブロックに検索しにいきます。見つかった段階で検索を終了して処理をします。)
ちょっとややこしいですが例文を一つ。

class ExceptionZeroJosan {
	public static void testA() {
		try {
			testB(); //< 2
		}
		catch(ArithmeticException ex) { //< 7 呼び出し元まで探しにくる。
			System.out.println("testAメソッド内でキャッチしたよ!"); //< 8 例外キャッチ
		}
		finally { //< 9 必ず実行されます。呼び出し元に戻る。
			System.out.println("ふはは!");
		}
	}

	public static void testB() { //< 3
		int x = 5;
		int y = 0;
		try {
			int z = x / y; //< 4 (例外発生!)
			System.out.println("あああ");
		}
		catch(ArrayIndexOutOfBoundsException ex) { //< 5 (クラスが違うのでキャッチできず)
			System.out.println("testBメソッド内でキャッチしたよ");
		}
		finally { //< 6 必ず実行されます。呼び出し元に戻ります。	
			System.out.println("ぐぬぬ...");
		}
	}

	public static void main(String[] args) {
		try {
			testA(); //< 1
		}
		catch(NumberFormatException ex) {
			System.out.println("0で割っちゃだめだよー");
		}
		finally { //< 10 必ず実行されます
			System.out.println("終わり");
		}
	}
}

処理される順番を書いておいたので追ってみて下さい。


ちなみにですが、全ての例外のスーパークラスであるExceptionクラスとして例外オブジェクトを引数で受け取れば例外のキャッチが出来ます。
catch(Exception ex)としてみて下さい。
catch(ArithmeticException ex)としたときと同じ実行結果になるはずです。




次はthrowステートメントについて書こうとおもったのですが、
あまり良く分かっていないことにたった今気付き、絶望していますw
もうちょっと勉強して出直してからきますw

それでは今日はコレくらいで。
皆さん、暑くなったり涼しくなったりしているので体調崩さないように。
ではでは。