2011年7月7日木曜日

いろいろメモ

いろいろとど忘れしそうなのでメモ

★final
★try.......catch処理.....catch
tryの中でおこったエラー処理

★n< 0||100default 定数式3:
処理3
break;
}
//breakはここで処理を終わるという意味
String型の文字列定数は二重引用符(")
例case "a":{}
char型の文字定数は一重引用符(')
例:case 'a':{}
★doubleやString型は整数じゃないので定数式作れない。

★Integer.parseInt
キーから入力された数字を整数に変換

★NumberFormatException
文字列が数字でなかった場合

★ line.charAt(i) 文字列のlineのi番目の文字を得る式

★ line.length()文字列のlineの長さを測る式


2011年7月4日月曜日

光の進む早さの計算

光の進む早さを30万㌔として、光が一日に進む距離の計算
public class Q31 {
public static void main(String[] args){
//正解
System.out.println("光が一日にすすむ距離は" + (24 * 60 * 60 * 300000L) + "kmです。");
System.out.println("光が一日にすすむ距離は" + (long)24 * 60 * 60 * 30000 + "kmです。");
System.out.println("光が一日にすすむ距離は" + (300000.0 * 60 * 60 * 24) + "kmです。");
System.out.println("光が一日にすすむ距離は" + (double)300000 * 60 * 60 * 24 + "kmです。");

//誤り
System.out.println("光が一日にすすむ距離は" + (24 * 60 * 60 * 300000) + "kmです。");

}
}

上から
光が一日にすすむ距離は25920000000kmです。
光が一日にすすむ距離は2592000000kmです。
光が一日にすすむ距離は2.592E10kmです。
光が一日にすすむ距離は2.592E10kmです。
光が一日にすすむ距離は150196224kmです。
と表示される。
------------------------------------
計算にもいろいろやり方がある。
★30万㌔メートルはオーバフローを起こすのでlong型の定数かdouble型をつけてあげる。
以下は、どちらも同じ書き方の違い。
◯long型
System.out.println("光が一日にすすむ距離は" + (24 * 60 * 60 * 300000L) + "kmです。");
System.out.println("光が一日にすすむ距離は" + (long)24 * 60 * 60 * 30000 + "kmです。");

◯double型
System.out.println("光が一日にすすむ距離は" + (300000.0 * 60 * 60 * 24) + "kmです。");
System.out.println("光が一日にすすむ距離は" + (double)300000 * 60 * 60 * 24 + "kmです。");

なんにも型指定しないと誤った数値が表示される
System.out.println("光が一日にすすむ距離は" + (24 * 60 * 60 * 300000) + "kmです。");

プログラムは

プログラムは書いた通りにしか動かないし、
どういう考え方や書き方をしていけばいいのか、
本当に考えて書くという行為をしないと。
まだわからなくて、少し書いてみて、そこからやっぱり回答みてしまう。

でも講習をうけていることは本当に充実していて、楽しい。

今日寝付けなくて3時間くらいしか寝てなかったから、フッととんだ瞬間あって奥歯かみしめたわ。この講習は本当にありがたいので、耳の穴かっぽじって聞かないとと思ってる。
私、結構まわりに呆れられてると知ってるw
今日のこの記事はコードじゃないけど、何か書き留めておきたい。

私にとってプログラムは作る物の手段だと思ってる。
これが作りたかったらJAVA勉強せなあかんやろうし、
あっちが作りたかったらC言語を勉強する。
臨機応変に対応していきたい。
Flashで作るのが最適だったらactionscript書く。
ただ、人一倍不器用なので唸ってるし、路頭に迷ってる。
でも、その考えが出来るようになったので大学いってよかった。
ただ、よく理解もせずsampleを使ってコピペするのは詰む。
だから今困ってるorz

だいたいユーザーは、中身なんて気にしてないんだよ。
バグがなくてUIよくて楽しめれば、いい。
それが一番難しい。

復習

今日は名前と年齢を聞いて、10年後の足した年齢を表示することを覚える。
以下は参考書をそのまま写したコード。

import java.io.*;
public class HowOldAreYou {
public static void main(String[] args){
System.out.println("あなたの名前を入力して下さい。");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try{
String line =reader.readLine();
System.out.println(line + "さん、こんにちは。");
System.out.println("年齢を入力して下さい。");
line = reader.readLine();
int age =Integer.parseInt(line);
System.out.println("いま" + age + "歳とすると、10年後は"+ (age + 10) +" 歳ですね。");
}
catch (IOException e){
System.out.println(e);
}
catch(NumberFormatException e){
System.out.println("年齢が正しくありません。");

}


}
}
★readLineは文字列を一行分取得して行くメソッド
String line =reader.readLine();//入力待ち
line =reader.readLine();

★reader.readLine
rederは変数
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
変数readerはBufferedReader の型
char a ='A';と同じで 
型 変数名=代入する値
代入するのはnew BufferedReader (゚_゚)フムフム…
BufferedReaderっていうのは、データを読み込む為のクラス

★その後の(new InputStreamReader(System.in));
InputStreamReaderはBufferedReaderを作る為の引数。
new InputStreamReaderで別のクラスのオブジェクトを作成
System.inはキーボードからデータを入力する為の物。


ということで、
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));は
System.inで入力された文字列をもとに、InputStreamReader作成→ BufferedReader作成→
変数readerを、そのオブジェクトに作成。
なにこれ逆から反応していくという事かいな。

Integerは整数を表すクラス
parseIntは数字の列を解析して対応する整数値を得るメソッド
parseは文法の解析

2011年7月3日日曜日

なんか焦るわ

プログラムを移すことに満足していてはいけないと、自分に忠告。
サンプルばかりをうつして、書いた気になっているようでは駄目だ。
でも、移す事も覚える事だから、
この動作が何をするための動作なのか意味を理解し考えながら書かないとと忠告。
卒業制作してみて、本当にこれは実感した。
そうじゃないと上達しないし、書かないと。

ーーーーーーーーーーーーーーーーーーーーーー
基本型は論理値及び数値を表す方double

参照型はクラス、インターフェース、配列や列挙型を表す方

2011年7月1日金曜日

コマンドプロンプト

XcodeやFlashでスクリプト書いて実行するときcommand+returnなんやけども、
今日の作業は一々実行するときファイル指定してあげないといけなかった。

テキストエディタでjava書く→コマンドプロンプトでファイル指定、デバッグ(classファイル生成)→実行

Macユーザーには「何これ〜」やよ、本当。
windows良く分からんとも思ったし、テキストエディタから読み込んでくるから早いのか複数の操作ができるというのか、マウス使わずキーボードだけで実行可能とか調べるといろいろでてくるけども。

でもはっきり言ってよくわかんない。
コマンドプロンプト(MS-DOS)ってcharacter user interfaceをもったOSってとりあえずメモっとく。

人事だけども、自分事。

詳しい事は言えないが、Java言語プログラミングレッスンを今日から使って勉強してく。
私はJavaとjavascriptって、C言語のobjective-cのような感じで勝手に解釈してた。
でも文法も動作する環境も異なり、直接関係ないよって書かれてた。MA・ZI・KA!!

★Javaの特徴
・機種依存性が非情に少ない。javaはほとんど移植をしなくてもいいように設計されてる
・型の制約が厳しいので、コンパイル時に発見されやすい
・オブジェクト指向言語
Javaはプログラム全体がオブジェクトという部品による構成
・マルチスレッドを取り扱える。複数のスレッドを簡単に扱う平行プログラミングが出来る。

うーん、何となく?
スレッドについてはここ読むと、分かりやすい。
これ読んだ私の解釈としてスレッドはプログラムを1行ずつ解釈して実行して行くのに対して、マルチスレッドは複数のスレッドが分担して作業を行ってるということかな。