2019年06月30日

for文は「for( 初期化式 (initialization); 条件式 (condition); 継続式(increment/decrement) ) { // 処理 }」だけど、for (;;)みたいな無限ループする空のfor文もある

空のfor文は無限ループする http://wisdom.sakura.ne.jp/programming/java/java9.html って話があったんで、試しに動かしてみた。

package dj.shikabane;
public class Roopslider {
public static void main(String args[]) {
int count = 0;
for (;;) {
System.out.print("count = " + count + "\r");
count++;
if (count > 9999) break;
}
System.out.println("ループを抜け出しました");

}
}

forの継続条件とかは、コードブロックの中でも代替できるって話か。

count = 3847
count = 3848
count = 3849

count = 9997
count = 9998
count = 9999
ループを抜け出しました

みたいな結果が出てきたが。
「なんで3847から出てきたのか?」が、意味不明。
面白いのは「 + "\r"」っていうよくわからないコードを省いたら。

count = 0count = 1count = 2count = 3count = 4count = 5count =・・・9997count = 9998count = 9999ループを抜け出しました

と、改行せずに全く違う結果が出てくる。じゃあ\r は何だっていうと。
どうやら改行らしい。


だから改行されないってか、これを省いちゃうと。
たぶん出力結果が3847から出てきたのは、コンソールの最大行数を超えたからだと。
コンソールのバッファー・サイズ(文字)(B)は80000に設定されてた。


を参考に、とりあえず160000、倍にしてみたら。
ちゃんとcount = 0から表示してくれたね。

ちょっと小休止。


で、紹介されているサンプルコードを理解してみる。

package dj.shikabane;
public class Roopslider {
public static void main(String args[]) {
for (int i = 0, j = 10; i < 5 && j > 4; i++) {
System.out.println(i + ", " + j);
j -= 2;
}
}
}

jに入ってる値を−2して、jに代入すればいいってこと。
結果は、

0, 10
1, 8
2, 6

になる。1回目のループでjは10だけど、j -= 2で減算されるから、8になるってか。
2回目のループ、iは1、jは8、また-2されて6に。
3回目のループの終わりで、jは4まで減る。
そうなると「i < 5 && j > 4」っていう条件を満たせないから、4回目は行かずにループ抜けるってか。

はぁ〜今日はこの辺にしとくかな。
posted by DJしかばね at 09:06 | Comment(0) | Java学習 | このブログの読者になる | 更新情報をチェックする

2019年06月08日

int型とdouble型、型が一致しない計算はdouble型が優先される/double型をint型にキャストした場合小数点以下は切り捨てされる

このコードの結果について。

class Nifa {
public static void main(String[] args){
int month = 9;
String japaneseMonth = "";
String quarter ="";
if(month == 9){
japaneseMonth = "長月";
} else if (month >= 7 && month <= 9){
quarter = "第二四半期";
}
System.out.println(japaneseMonth + "" + quarter);
}
}

答えろという問題、判らない…まず不明な記号が多すぎる。
ので、調べることになった。まず"&&"について。
これは論理演算子らしい、論理積、とか呼ばれてる。
右辺も左辺もtrueの時はtrue、どちらかでもfalseだったらfalseとか。
==”は確か代入だったような…違った、代入演算子が"="で、ダブルイコールは等価演算子。

これで結果が判る。まずmonth変数にはint型、整数の9が入る。
ただ、初期化してるかこれ…いや、変数を宣言して初期化するのと値を代入するのは、同時かつ一文で出来ることが、


で説明されてる。
だからmonthは9で間違いない。
String型のjapaneseMonth、quarterは、最初は""で、何も値が入ってないが。
monthに9が入っているという条件下の時は、japaneseMonthに"長月"という文字列が入る。
もしmonthに7以上9以下…int型だから、小数点が入ることはない・・・か、恐らく。

monthは9が入ってて、それ以外の値が入れられることはないから、else ifの条件指定の無意味。
monthが9の時は、変数japaneseMonthとquarterに、それぞれ指定の文字列が入る。
だから答えは「長月 第二四半期」になる。

あっ、違った。


で書いてる、&&は「かつ」を示す条件演算子だと。
monthの値は9だから、それ以外の値が入ることはあり得ない。そんな条件は記述されてない。


に書いてる。if文を抜けるってことだ、else if文に入らずに。
だから答えは「長月」だけってか。


を、ちゃんと読んどかないとな…。

ちなみにクラス名にしたNifaってのは、進撃の巨人 Season3を観てて出てきたキャラクター。
であり、お風呂サイドワゴンにも同じのがあるみたい。
聖愛中学高等学校のJava講座、判りやすいから読んでみるか、また。https://seiai.ed.jp/sys/text/java/
posted by DJしかばね at 21:59 | Comment(0) | Java学習 | このブログの読者になる | 更新情報をチェックする

2019年06月07日

「javaでのメインクラスの戻り値はvoidのみ、intや他の型を返そうとして組むと実行時にメインクラスと認識できずエラーとなる」と知恵袋に/拡張for文は「for (取り出す要素の変数宣言 : 配列あるいはjava.lang.Iterableのインスタンス) { 繰り返し処理; }」みたいなやつ


そんで、


を読んだけど、エントリポイントって何?

カッコつけ用語だな。あと、仕事のメールで「EOLに伴い〜」とか来てたから、どういう意味?って思ったけど。
end of life、寿命の終わり、から転じて、何かソフトウェアとかのサポート終了みたいな感じよ。
紛らわしいし、ネガティブな言い回しを使うなっての。

EOL、と言えばElements of Lifeだっけ、MASTERS AT WORKのLITTLE LOUIE VEGAのバンドプロジェクト。

Luisito Quintero - Aquilas Coisas Todas (Louie Vega EOL Remix)

久しぶりに聞いたけどいいな〜何か外国で電車とか馬とかトゥクトゥクに乗って移動している時、現地の人に笑顔で声かけられたり何かくれたりするみたいな、深夜特急的な異国ロマンが漂ってるのよね。

そんで、いい感じの論文を見つけた。「カプセル化」「ポリモーフィズム」「継承」の概念を比喩を用いて説明する場合、

 クラスを携帯に例えて表現する。
携帯はボタンを押すとそれに対応した動作をするが、普通に使う分にはその中の仕組みを知る必要はな
い。勝手に触れると逆に壊れ易くなり、困ったことになるので触れない様にしておく【カプセル化】
 携帯の操作方法は同じだが、使う機種によってその性能は異なる。(近年の携帯は昔のそれと比べると
容量が大きくなっている) 【ポリモーフィズム】
 元々、携帯は一連絡手段として普及していたが、最近では音楽を聞いたり、動画を見たりすることが
できるようになっている【継承】

モジュール、インスタンス、オブジェクトについても有機的に説明されているな。
次に〜これ。

class Bakura {
public static void main(String[] args){
String area[] = {"東京","名古屋","大阪","岡山"};
for(String name : area){
System.out.println(name);
}
}
}


BakuraのMistaken、久しぶりに聞いたけど、サビへの入り方と小気味よいスキャットがいいね。
3行目は配列の宣言、初期化とともに値を用意している?感じか。
4行目のfor文、ループカウンタ無し、String型…あんまみかけないが、間違いではないらしい。

◆i am BEST : Java でももうループは書かない!?

が参考になるか。

あ〜頭が痛くなってきたからやめるか。
そもそもfor文で引数がString型だと?そんなのあるの?
ちょっと調べる必要あるな…おそらく「拡張for文」ってやつだ。

◆基本をしっかり押さえよう! Javaのfor文による繰り返し処理

ああ、サビへの入り方で思い出したが。
この「 Definition of Luv 」って曲、これも、サビに入る前の哀愁感っての、どこか懐かしい80年代っぽいアレンジ、優しく包み込むような柔らかいエレピの電子音がいいな〜♪

Joey Negro & The Sunburst Band - Definition of Love (東京高速道路-도쿄 고속도로)

suchmos聴いてカッコつけてるが、とりあえず渋谷出しとけカテゴリに入れることにした。


suchmosのmint、なんだけどね。「東急 ほけんのコンシェルジュ」とかが映ってる。
神奈川出身なら、渋谷やじゃなくて。
葉山のマーロウ、稲村ジェーンが崎じゃないの!?
suchmosみたいなカッコいい雰囲気の曲を聴くと、直球でハート揺さぶる感じの曲が聴きたくなるんだな。

ナオト・インティライミ「恋する季節」とかな。ストリングスのアレンジがいい。ヴァイオリン入れるとやっぱ上品で壮大な感じになるな。壮大なアレンジだから、逆に青臭い歌詞をマイルドにコーティングしてくれる感じ。カレーに半熟卵入れてちょっと辛さ抑えるみたいな、海鮮丼に半熟卵を入れる外道には判らんかもしれんが。

スペースシャワーtvで、ナオトインティライミがひまわり畑でいい感じに歌ってて気になった。「THE BEST!」ってアルバムに入ってるらしい。

この世界中どこ探しても君の代わりなんていないんだよ 君にしかなれない君がいるんだよ

なんつって。超励ましてくれるぞこの曲!
方向性を間違えたら、いかんけどね…。



posted by DJしかばね at 22:15 | Comment(0) | Java学習 | このブログの読者になる | 更新情報をチェックする

2019年06月02日

浮動小数点数のデータ型であるdouble型でも、変数に整数を代入することはできるし、四則演算もできる/「int a[];」と「int[] a;」はどちらも正しい/C言語の#include はすでに用意されている入出力を行うための関数を使うための準備

Alma Faye Brooks - Don't Fall In Love

この曲を聴いたら1週間ぶりに勉強する気になった、クラス名は適当にこの曲の歌手名にしよう。

class almafayebrooks {
public static void main(String[] args){
double a = 127;
double b = -2;
double c = a + b;
System.out.println(c);
}
}

このコードに誤りはないんだな。
Alma Faye Brooksの動画観る前に、広告でこの動画流れてきた。

Life is tasty!/燦鳥ノム【オリジナル曲】

これはいい曲、疾走感のあるビートをストリングスとピアノでより上品に仕上げてる感じ、特にヴァイオリンが爽やか。ヴァイオレット・エヴァーガーデン湖のシーンとかに合ってるんでは?あんまり詳しくないけど。
そんで次は。

int a[];
int b[2];
int[] c;
int[] d[];

の、中で、間違っている配列の宣言。それは「int b[2];」らしい。
「int[] c;」は、int型の配列(複数のデータをひとまとまりにして扱う方法)を、変数cに代入してるってことで、正しいことは判る。
初期値の個数に応じて配列の要素数を決めたいときは配列の要素数を空欄にしておくこともできる。https://www.cc.kyoto-su.ac.jp/~yamada/programming/array.html)らしい。
cは配列変数の名前。
じゃあ「int a[];」と、どう違うっていうんだってことだけど…どっちでもいいらしい。



多くの場合、変数には宣言と初期化が必要【Java入門】配列と初期化について | 「ポテパンスタイル」)ってことだから。
「int b[2];」が駄目な理由は、初期化されてないからだと思われる。
宣言しただけでは中身の値は不定値で、初期化がされてないから。初期化子{}で囲めば問題ないhttp://rainbow.pc.uec.ac.jp/edu/program/b1/Ex3-1.htm)らしい。つまり「int b[2] = {1,2};」だったらNGじゃなかった…はず。でもint a[4]; /* aという配列を宣言.要素数は4,a[0], ... , a[3] が利用可能になる. */とか書いてるサイトあるけどな〜。
ちなみに、
のサイト。演習課題があるのがいいな。問題形式の方が頭に残りやすい気がする。解答例は、
にある。でもこれ情報処理・演習1(2009年度 前期)とかいう講義の記録か〜何か、C言語っぽいな。
C言語難しいイメージあるんだよなぁ、Javaよりも。
Javaよりも言語の手続きとかルールが複雑なはず…Javaより昔の言語だし。
演習課題は気が向いたらするか。Javaのはねえか?と思って探しても。
過去の講義資料(http://www.isc.meiji.ac.jp/~re00079/)も、C言語中心だわ。
全ての言語のベースとなる基本をやってるイメージ、これ、ためになりそうだけど、難しそうだなぁ。
でも、ここ→ http://www.isc.meiji.ac.jp/~re00079/EX1.2010/2010_01.html で説明してるC言語の概要は判りやすかった。

閑話休題。

話が逸れた、そんで「int[] d[];」が正しい理由は、多次元配列だからじゃないか、たぶん。
ああほんと、真夜中に頭使いすぎた、こんな問題1つにめちゃくちゃリサーチ掛けて調べまくって、ヘトヘト…。
配列ではないけれど、

上の例では変数 x の値を参照しようとしているが、変数 x にはまだ紙が入っていないため、これはコンパイルエラーになる。https://java2005.cis.k.hosei.ac.jp/materials/lecture11/array1.html

も、基礎の復習によかった感じだな。

そんで、ストリングスでJavaのString型と、ちょょっと前に紹介した古川麦のGreen Turquoise思い出した。
やっぱいい曲だ、ほんとに。
ストリングといえばね、これもいいんだよな。

Special Favorite Music「Royal Memories」(Royal Blue収録)

そう、"儚さ"だよな、ヴァイオリンで表現すると際立つのは。なんでか知らんけど。

Teddy Douglas & Luis Radio ‎– The Violin (basement boys remix)

とかも、儚ない感じするな。
ただ、

"Mystery Girl" Chieko Kinbara feat. Byron Stingily(「SWEETEST DAY ROMANCE FOR STRINGS」収録)

は、そんなに儚くない。むしろ躍動感や活力にあふれてる。ヴォーカルの力も大きいんかな。
でも終盤はちょっと儚い感じもしたり…やっぱ、ヴァイオリンは魅力的だなその点が。
んでこのトラックは金原千恵子の中では1、2を争う名曲だといっても過言じゃない…と、思うね。

はあ〜もう3時だ。


とかは、読む気力ない。

久石譲でも聞いて、儚さとともにまどろむかな。

posted by DJしかばね at 03:04 | Comment(0) | 美味い店(国内) | このブログの読者になる | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。