19/03/27 06:22:28.73 VcZxW+M/.net
('仄')パイパイ
3:デフォルトの名無しさん
19/04/09 17:21:52.11 WcUdn8Y0.net
(1)
while (threadState == true) {}
(2)
while (threadState == true) {
System.out.print("");
}
マルチスレッドで、他のスレッドが threadState を変更するのを待ちたいのですが、(1)だとループを抜けてくれませんが、(2)なら抜けます。
何が悪いんでしょうか?
4:デフォルトの名無しさん
19/04/09 17:29:01.76 xq+Mg1lA.net
>>3
その変数の宣言はどうなってる?
5:デフォルトの名無しさん
19/04/09 17:38:46.23 WcUdn8Y0.net
>>4
boolean threadState;
クラス変数です。
この変数を変更する別スレッドも内部クラスです。
6:デフォルトの名無しさん
19/04/09 18:13:44.59 xq+Mg1lA.net
>>5
volatile 付けるとどうなる?
7:デフォルトの名無しさん
19/04/09 18:28:46.46 WcUdn8Y0.net
>>6
それでうまく行きました。ググったらコンパイラの最適化の問題とかみたいですね。
本当にありがとうございました。
8:デフォルトの名無しさん
19/04/09 20:54:29.66 xq+Mg1lA.net
>>7
ああ。でもマルチスレッドでの同期については単純なのならそれでも良いけど本当ならちゃんとロックした方が良い事はお忘れなく。
少なくとも今のプログラムだと変数の内容が変わるまでずっとルーブするので効率が悪い。
他から起こされるまで眠るみたいな方式の方が本当に何もしない状態になるので効率は良い。
9:デフォルトの名無しさん
19/04/21 19:40:38.40 rH04a7Av.net
スレチならすいません。
以前からスマホアプリを作ってみたいなとおもってまして、この度PCを購入しました
のでもってまずはプログラミングの代名詞でもあるjavaを習いたいと思いandroid studio をダウンロード、インストールしたのですが、
アプリが立ち上がりません。。
どなたかこの原因がわかる方いませんか?
↓エラーメッセージ
Error launching Studio
Failed to load JVM DLL C:\Program Files\Android\Android Studio\jre\jre\bin\server\jvm.dll
if you already have a 64-bit JDK installed, define a JAVA _HOME variable in Computer > System Properties > System Setting > Enviroment Variables.
↓PCのスペック
win 10
Corei7
RAM 8G
OS 64ビット
10:デフォルトの名無しさん
19/04/22 01:40:27.90 x8/JvOWt.net
JVMのDLLの読み込みが失敗しました
64-bit JDKインストールされてるなら環境変数JAVA_HOMEを設定してください
ってことなのでJavaをインストールして環境変数を設定したらok
11:デフォルトの名無しさん
19/04/22 01:56:13.24 8zvml5Ya.net
>>10
ご回答ありがとうございます。
私もそう思ってJDKをインストールして環境変数(JAVA_HOME)を通してみたのでしたが、同じエラーメッセージが表示されました。
パスが間違っているのかわからないんですが、JDKのインストール先とAndroid Studioのインストール先が違うと動かないのでしょうか?
JDKをどこかのファイルと同じ階層に置かないと起動しないというのはありますでしょうか?
12:デフォルトの名無しさん
19/04/22 07:26:20.66 x8/JvOWt.net
>>11
パスが正しいかはコマンドプロンプトで実行してみればわかるかと
"%JAVA_HOME%\bin\java.exe" -version
所定の場所にJDKをインストールしないといけないなら
JAVA_HOMEを設定する必要ないんでそういうことはないと思うよ
64bitならstudio64.exeを起動しましょうとかあるんで
そのへんじゃないかな
13:デフォルトの名無しさん
19/04/22 20:58:57.68 8zvml5Ya.net
>>12
解決しました。
studio64.exeでした
いやはやお恥ずかしい・・
ありがとうございます
14:デフォルトの名無しさん
19/04/23 05:21:17.14 dZlKsmD/.net
昔今より更に素人だった頃自分のパソコンにjavaの実行環境を作った事があって、そしてまた走らせてみようと思ってさっきVScodeで実行してみたら上手く行った。
ここまではいいんだけど多分今入ってるのがSEだからEEに取り替えたい。
環境変数の変更からファイルの交換までどうすればいいか誰か教えてくれない?
一応VShomeのjava.homeっていう所は"C:\\Program Files\\Java\\jdk1.8.0_161"みたいなんだけど
15:デフォルトの名無しさん
19/04/23 06:10:09.74 dZlKsmD/.net
とりあえずjava_ee_sdkっていうのはDL&解凍したけど今パスの方にあるjava_homeの参照先はjdkなんだよね
でも調べるとsdkにjdkが入ってるみたいなことが書いてあるからsdkと書いてあるフォルダをjava_homeに設定したら駄目だった
どこにjavaEEのjdkがあるの?
16:デフォルトの名無しさん
19/04/28 12:34:42.35 hq3/I6v+.net
どなたか教えてください。。。
未経験で今新人研修してます。。。
【 課題 】Javaでタイピングゲーム作成
URLリンク(dotup.org)
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】4. 制限なし
【 期限 】2019/05/05
【 Ver 】javac 1.8.0_131
17:デフォルトの名無しさん
19/04/28 12:48:45.95 FKjutIP9.net
>>16
どこまでやったのかも書き込んで下さい
18:デフォルトの名無しさん
19/04/28 13:05:16.13 hq3/I6v+.net
>> 17
すみません
私未経験でメソッドとか配列とかチンプンカンプンなので、
コンパイルエラーなのですが、進捗はこちらです。。
1) URLリンク(dotup.org)
2) URLリンク(dotup.org)
3) URLリンク(dotup.org)
19:デフォルトの名無しさん
19/04/28 14:07:36.96 Sci+vZGC.net
>>18
エラーの内容を教えてもらえれば
20:デフォルトの名無しさん
19/04/28 14:17:03.90 hq3/I6v+.net
>>19
URLリンク(dotup.org)
このような感じです。。
21:デフォルトの名無しさん
19/04/28 14:17:11.36 FKjutIP9.net
>>18
未経験で新人研修と言う事なので
一気に全てやろうとするのではなく
1つ1つメッセージを表示して確認しながら追加していってみて下さい
1,最少構成でコンパイルが通るようにする
2,難易度選択で分岐
3,・・・のように
22:デフォルトの名無しさん
19/04/28 14:18:36.34 FKjutIP9.net
>>20
基本的にはエラーメッセージは上から順に解決していって下さい
23:デフォルトの名無しさん
19/04/28 15:24:46.80 Sci+vZGC.net
>>20
↓こんな感じでしょ
public static void literal1(String easy) {
String[] easy = ...
for (int i = 0; i < easy.length; i++) {
...
}
引数でString easyを定義してて
String[] easyでも同じ名前の変数を使ってるんで
そのせいじゃないかな
変数の名前変えれば良さそう
24:デフォルトの名無しさん
19/04/28 16:08:34.47 hq3/I6v+.net
21>>この問題の場合どこで条件分岐して良いのか、など構造の書き方がわかりません。。
アドバイス(特に書き方について)していただけると嬉しいです。。
22>>処理は全て上から、問題文の1文目から書いていけばいいですか?
25:デフォルトの名無しさん
19/04/28 16:10:15.85 hq3/I6v+.net
23>>
クラスの宣言と配列の引数は名前変えないといけないんですか!?
26:デフォルトの名無しさん
19/04/28 16:33:18.29 FKjutIP9.net
>>24
上からというのはエラーメッセージの上から順番にです
1つ目のエラーが原因で2つ目のエラーが表示されるというケースもあるので
その場合は1つ目のエラーを解決すれば2つ目のエラーも解決します
エラーメッセージが指し示している部分より前に原因がある事もあります
27:デフォルトの名無しさん
19/04/28 16:40:52.16 Sci+vZGC.net
>>25
同じスコープで同じ変数名を使うのがNGです
int a = 0;
int a = 1;
はコンパイルエラーになるっしょ
void test(int a) {
int a = 0;
}
もコンパイルエラーになるっしょ
そういうこと
28:デフォルトの名無しさん
19/04/28 18:27:38.29 ChpnCGHg.net
最近って環境変数JAVA_HOMEって設定しなくても良くなったんですか?
OracleJDKからの移行で色々OpenJDKの試しているのですが
各種ツールなども問題なく動くようにみえます
29:デフォルトの名無しさん
19/04/28 19:06:23.53 Sci+vZGC.net
環境変数が設定されてなかったら固定のパス見たり
JREを内蔵してるソフトウェアもあったりするけど
ツールによるんじゃないかな
30:デフォルトの名無しさん
19/04/28 20:07:51.67 Sci+vZGC.net
>>24
制御構造は順次、選択、反復で
どこの処理をループさせる必要があるか
どこで選択が必要かは全体のフローをざっくりと書いて見るとわかるかと
それを仕様から読み取るのも問題の範囲かなと、良い問題だわ
参考までに僕は↓こんな感じのフローかなと思った
ゲームのループ
{
難易度選択(Easy, Normal, Hard)
・・・
出題のループ
{
一致のループ
{
・・・
if 文字列が一致
{
・・・
ループを抜ける
}
・・・
}
}
・・・
リトライ確認がNoならループを抜ける
}
31:デフォルトの名無しさん
19/04/28 20:33:58.00 hq3/I6v+.net
>>26
分かりました!
ありがとうございます。
32:デフォルトの名無しさん
19/04/28 20:35:30.76 hq3/I6v+.net
>>27
なるほど。。そうゆうことだったんですね。
ありがとうございます
33:デフォルトの名無しさん
19/04/28 20:36:44.50 hq3/I6v+.net
>>30
わ!ありがとうございます。
こうゆう感じで書いたらいいんですね。
ちなみに私の配列の書き方は合ってますか?
34:デフォルトの名無しさん
19/04/28 20:47:23.73 Sci+vZGC.net
>>33
String[] easy = {"byte","int", ・・・};
って書き方でしょ、あってるよ
コンパイルも通るっしょ
35:デフォルトの名無しさん
19/04/28 21:05:25.44 hq3/I6v+.net
>>34
あ。はい。通ります。。
36:デフォルトの名無しさん
19/04/28 23:53:38.93 f2XJNhgt.net
元号対応は終わりましたか?
37:デフォルトの名無しさん
19/04/29 01:20:21.30 +dv4YRAe.net
>>36
俺んとこは西暦だけらしいからしてねぇみてぇだな。
38:デフォルトの名無しさん
19/04/29 10:07:56.34 KObxA37V.net
>>36
URLリンク(forest.watch.impress.co.jp)