[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/16 04:50 / Filesize : 268 KB / Number-of Response : 1022
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Java入門・初心者質問スレ Part.2



1 名前:デフォルトの名無しさん mailto:sage [2016/11/11(金) 20:25:11.04 ID:zFksT2Ki.net]
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ
echo.2ch.net/test/read.cgi/tech/1462997913/

950 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 09:24:05.57 ID:yKZp9elZ.net]
エクリプスもしくはWindowsのコマンドプロンプト上で動作させることを前提として、
以下のようなメニューをまずSystem.out.printlnで表示させて、数字を押したらその処理へ分岐させたいと思っています

0)終了 2)分岐A 2)分岐B

この状態で入力待ちし、有効な数字(テンキー)を一回押した時点(エンターキーを押す必要なく)で分岐させたいのですがどうすればできますでしょうか?

951 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 09:34:16.63 ID:yKZp9elZ.net]
すみません
メニュー画面は

0)終了 1)分岐A 2)分岐B

でした

952 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 09:46:14.21 ID:7zcp0Qp+.net]
JCurses

953 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 10:14:05.58 ID:jHsv1zL4.net]
>>932
学校の宿題/課題なら自分で調べろ

仕事ならそういったコントロールはJavaじゃなくてスクリプトでやったほうがいい
スクリプトで処理を決定して、実際の処理だけJavaで書くようなイメージ
役割分担せずに全部Javaで書くのはオススメしない

954 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 18:23:39.16 ID:LF0rDNJx.net]
javaブロンズ試験て簡単ですか?

955 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 18:30:29.91 ID:Bv8WFxPo.net]
>>934
ありがとうございます

>>935
あぼーんさせていただきました

956 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 19:12:56.71 ID:nJQFz+7u.net]
別の言語でCUIフロント書いてJavaでサービスを提供が無難だろうね
というかこの場合はJavaを捨てて他の言語で全部やるのが正解かな

957 名前:デフォルトの名無しさん [2017/03/30(木) 19:35:19.16 ID:aX4kcfBQ.net]
>>936
そんなの人による。オブジェクト指向がわかっていればちょっと問題集をやれば受かる。

958 名前:デフォルトの名無しさん [2017/03/30(木) 20:32:42.78 ID:LoY/XYZC.net]
>>936
知らない。受けようとすら思ったことがないので。



959 名前:デフォルトの名無しさん [2017/03/30(木) 20:36:33.31 ID:LoY/XYZC.net]
>>938
JavaでやるならGUIでボタン並べとくのが楽かも。
かといってその後画面に何も出さなくていいようなプログラムだと無駄か、

960 名前:デフォルトの名無しさん [2017/03/30(木) 20:47:03.40 ID:aX4kcfBQ.net]
>>941
初心者のくせに変なアドバイスするな。

961 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 21:27:26.98 ID:3vwWvZ6d.net]
エンターを拒否する理由がわからないし本人も書かない

>>941 はそれほど変ではない。まぁエンターを可にすれば良いだけだけど

KeyListenerにキーボードが押された時にイベントが発生するってのがあった
ttps://www.javadrive.jp/applet/event/index5.html

962 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 21:48:24.46 ID:DOXC6NBl.net]
>>936
プログラミング自体初めての人でも1週間あれば受かる

963 名前:デフォルトの名無しさん [2017/03/30(木) 22:43:45.87 ID:aX4kcfBQ.net]
>>944
それは暗記が得意な人間限定だろ。

964 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 23:29:43.34 ID:zmDt1cqU.net]
>>936
資格が欲しいならブロンズでは役不足
ブロンズが受かるくらいの能力って意味なら土台くらいに思っていた方がいい
どちらにしてもブロンズでつまずくなら考えた方がいいと思う
学生なら大変って思うのはしょうがないけど

965 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 00:29:00.68 ID:G7JBJ9MS.net]
>>936
こんな問題が出ます。

以下のコードがあります。
1. class Num {
2. private int number1 = 10;
3.
4. public void Num() {
5. number1 = 100;
6. }
7.
8. public void disp() {
9. System.out.println(number1);
10. }
11. }
12. public class TestP {
13. public static void main(String[] args) {
14. Num n = new Num();
15. n.disp();
16. }
17. }

実行結果はどれですか?
1.100
2.10
3.2行目が原因でコンパイルエラーになる
4.4行目が原因でコンパイルエラーになる
5.14行目が原因でコンパイルエラーになる
6.実行時に例外が発生する

966 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 00:41:13.49 ID:Otn8HbSa.net]
935ってそんなひどい回答か?
至極まっとうな意見に見えるんだが…936がアレなだけ?

967 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 01:22:00.16 ID:hT0rQPiY.net]
誰が見ても、935 はまともだろ

>>932
>コマンドプロンプト上で、エンターキーを押す必要なく
もう、この時点で、Javaじゃないしw

968 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 04:33:30.50 ID:osu/qMYT.net]
CUIで入力を確定させるのにエンターキー使わない方法ってあるのか……?



969 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 07:23:06.99 ID:Otn8HbSa.net]
>>950
あるというか、仕様として決めればいい話
Javaでかつエンターいらないって仕様なら、
1行読みじゃなくて1文字読みすればいいだけのこと

970 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 09:02:39.11 ID:Ynkhy4/h.net]
コマンドプロンプトとjavaだけじゃ不可能じゃね?

971 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 09:03:42.27 ID:XdddFVWv.net]
cで言う所のgetche()だな

972 名前:デフォルトの名無しさん [2017/03/31(金) 10:51:24.05 ID:ndHhBxYB.net]
>>952
ぐるぐる回ればいいんだよ。

973 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 11:08:45.91 ID:H1pQ0CXA.net]
>>953
getche()嫌い(´・ω・`)

974 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 12:08:22.35 ID:r4bo6GQ0.net]
ネイティブライブラリ作ってJNIで利用するしか手がなさそう

975 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 20:55:58.48 ID:+RoQYFQA.net]
javaでゲームを作っています
キー入力でキャラクターが移動してマウスで様々なイベントの処理をしようとしているのですがマウスでイベントを処理するとキー入力を受け付けなくなってしまいます
原因が分かる方いますか?

976 名前:デフォルトの名無しさん [2017/03/31(金) 21:09:11.82 ID:w9WwQK5E.net]
>>957
わかんない。変な書き方してるんじゃない?

977 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 21:46:30.50 ID:Tf8W7eqI.net]
わかったぞ
バグってるからだ!

978 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 21:58:04.26 ID:+RoQYFQA.net]
やはりどこかバグがあるんですかね
そこまで複雑な処理はしてないのですが...
しばらく探してみます



979 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 22:13:13.87 ID:mtJPl6/b.net]
バグってハニー

980 名前:デフォルトの名無しさん [2017/04/01(土) 05:25:50.87 ID:2aD1OODW.net]
ていうか、どう書いたのかここに書くなり何処かに書いてリンクするなりしてくれないと誰も何とも言えんだろう

981 名前:デフォルトの名無しさん mailto:sage [2017/04/01(土) 16:16:56.73 ID:2aD1OODW.net]
>>953
その関数環境依存で最初からライブラリに入ってるのは主にWindows用Cコンパイラだよな。
他の環境だと自作することになって面倒。

982 名前:デフォルトの名無しさん [2017/04/01(土) 21:22:01.68 ID:j/176Eap.net]
ttps://pastebin.com/eJLwe5pK
コンソルに出力された結果値
A:X, B:〇, C:X, D:X, E: X, -> @@ : TW : 15, $ : 650 <-ここは300
A:X, B:X, C:〇, D:X, E: X, -> @@ : TW : 15, $ : 650 <-ここは350
A:X, B:X, C:X, D:〇, E: X, -> @@ : TW : 15, $ : 650 <-ここは500
A:X, B:X, C:X, D:X, E: X, -> @@ : TW : 15, $ : 650 <-ここは0

質問:<-[ここは~] の箇所は出力値が想定と違うのは

983 名前:ネぜでしょうか? []
[ここ壊れてます]

984 名前:デフォルトの名無しさん mailto:sage [2017/04/01(土) 23:32:20.40 ID:JX3Xm6T9.net]
想定がよくわからん。↓みたいな事がしたいのかと思ったけど。
ttps://paiza.io/projects/eGVsgPaiOfG8hG7yst2CBg

985 名前:デフォルトの名無しさん [2017/04/01(土) 23:52:55.78 ID:j/176Eap.net]
>>965

そうです。まさにその通りです。ソースを参考に何が間違っていたのか分析してみます。
大変ありがとうございました。

986 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 00:57:17.53 ID:oPl36p+V.net]
ソースコードを見て考えなくても、1行ずつ、デバッグすれば良いだけだろ?

それか、あちこちに、print文をばらまくとか

987 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 09:48:13.58 ID:7PiFqLeo.net]
>>964
正直何がしたいか(要件)がわからないけど、やりたいことに対して実装が複雑すぎじゃない?
実業務だったら多分全部書き直してる

988 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 16:17:59.71 ID:E8izrwFB.net]
wait()って、notify()ではなくタイムアウトで関数ブロック状態で抜けた場合それを知るすべが無いの?
タイムアウト・InterruptedExceptionで抜けた場合は処理Aを、
notify()で抜けた場合は処理Bを、ってことがやりたいんだが



989 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 19:16:01.75 ID:REfjDWjC.net]
>>969
notifyする側でsynchronizedブロック抜ける前になんかのフラグたてて、
wait終わったときにそのフラグ読み込むとかじゃだめかな?

waitObjectにboolean notifyFlagとか持たせて

// wait側
synchronized(waitObject)
{
try {
waitObject.wait(timeout);
} catch (InterruptedException e) {
// Thread.interrupted();
}

if (waitObject.notifyFlag) {
  // 処理B
} else {
// 処理A
}
}


// notify側
synchronized(waitObject)
{
waitObject.notifyFlag = true;
waitObject.notify();
}

990 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 00:57:41.00 ID:uNrfjwY7.net]
https://ideone.com/ccxD7R
上記のソースコードで実行時エラーが発生してしまうのですが、
どう直せばよいでしょうか?(Scannerの文)
スッキリわかるJava入門を参考に書いたのですが、
(例えば)String str = new java.util.Scanner(System.in).nextLine();
という文にある問題点が分かりません。

991 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 01:56:35.58 ID:BUL/emew.net]
自分の手元で動かせる環境がないのかな?
ideoneの使い方がそもそも間違ってるぞ。

992 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 03:01:27.51 ID:UirRGd7/.net]
>>970
ありがとうございます!

993 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 06:44:58.47 ID:UyEHLSu2.net]
>>971
単純に入力が無いぞこのやろーっていうエラーを吐いてる
IntelliJ辺りでソースコードコピーして実行したら
ちゃんと動いたぞ

994 名前:971 mailto:sage [2017/04/03(月) 15:54:28.98 ID:QRQ9n9IP.net]
>>972>>974
ありがとうございます。

エクリプスが入ってます。確かにそこではコンパイルエラーは出ていません。
しかしこのソースコードだとScannerクラスの使い方がよくないみたいなんですが、その辺りをどなたか説明して頂けないでしょうか?Googleで調べてもよくわかりません…。

995 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 16:11:53.89 ID:yiUlzfB2.net]
入力がないぞこのやろーってエラーをはいてるって言ってくれてるんだから入力するだけと違うんか

996 名前:971 mailto:sage [2017/04/03(月) 16:25:25.04 ID:uNrfjwY7.net]
>>976
どうやって入力すればいいんですか?
エクリプスのような案内が出ないんですが…。

997 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 16:31:30.42 ID:uA2N3UXp.net]
>>977
ideoneでコード書いてる下にstandard inputみたいなのあるはず
手元にEclipseあるならそれでやればいいんじゃないの?

998 名前:971 mailto:sage [2017/04/03(月) 17:08:42.50 ID:QRQ9n9IP.net]
>>978
ありがとうございます。

必要とされるであろうリテラルを、まとめて書いておくんですか?



999 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 18:03:17.35 ID:uA2N3UXp.net]
>>979
そう
改行挟んでね []
[ここ壊れてます]

1001 名前:971 mailto:sage [2017/04/03(月) 19:41:05.11 ID:uNrfjwY7.net]
>>980
分かりました。
ありがとうございました。

1002 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 19:43:08.35 ID:gZTdU5yD.net]
34歳ここにも書き込んでるなら向こうはよくね?

1003 名前:デフォルトの名無しさん [2017/04/03(月) 19:44:04.24 ID:bUINxLhd.net]
>>957
キーイベントはフォーカスを持ったパネルとかコントロールしか受け取れない
あと、恐らくjframe使ってると思うけど、Container cont=getContentPane();で
contに直接ボタンとかをaddしてない?それやるとタイトルバーに食い込むよね?
まずpannelをaddするとpanelはバーの下に配置されて左上0,0がバーの下になる。
マウスの位置の取得とかフォーカスとか全てそのパネルを基準にするといい。

1004 名前:デフォルトの名無しさん [2017/04/03(月) 19:50:58.79 ID:C0G2h/2V.net]
>>967
わかりました。デバッグしてみます。

>>968
Cで書かれているものをjavaで書こうとしているので、できるだけ、C実装と同じようにしたいと思っています。

1005 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 19:55:50.56 ID:jWiaLeMO.net]
>>984
他言語で同じ動作をするプログラムを組むってのは同じコードを書くって意味じゃないぞ

1006 名前:デフォルトの名無しさん [2017/04/03(月) 21:40:30.47 ID:C0G2h/2V.net]
>>985

はい、今回初めてわかりました。今は以下のようになっています。もう少し修正してみます。

ttps://pastebin.com/5GYupJyS

1007 名前:デフォルトの名無しさん mailto:sage [2017/04/04(火) 05:18:13.74 ID:K8Tf42DL.net]
Haxe(ヘックス)はOSSで、JSに型チェックを付けたような言語で(altJS)、
JS(ES5), Flash, PHP, C++, Java, C#, Python, Lua に書き出せる。
Windows8.1対応。IDEは、FlashDevelop

このサイトで、ブラウザでプログラミングして、実行できる
Try Haxe !
try.haxe.org/

Haxeプログラミング入門、尾野政樹、2015

1008 名前:デフォルトの名無しさん [2017/04/04(火) 14:36:15.40 ID:S7/ucjiF.net]
なぁ
interrupt()のすぐ後にsleep()入れると何故かスリープ後に割り込みが発生するんだけどこれ仕様?おかしいだろ。
すぐ割り込ませたいんだけど



1009 名前:デフォルトの名無しさん [2017/04/04(火) 19:05:06.01 ID:I9HDP9Y0.net]
わからん。
なぜ< Result >
false
false
false
false
false
表示されるんだろうか。
[false, true, false, true, false]が表示されるはずなんだが。
ttps://pastebin.com/DhqE0x1K

1010 名前:デフォルトの名無しさん mailto:sage [2017/04/04(火) 19:18:34.10 ID:865J8TPA.net]
>>970
Thread.currentThread().isInterrupted()じゃダメなんだっけ?

1011 名前:デフォルトの名無しさん mailto:sage [2017/04/04(火) 19:47:54.02 ID:iuVo07t1.net]
>>989
ざっとしか見てないけど50-58の間にreturnがなくて58で必ずFalse入れてるんだからそうなるだろ

1012 名前:デフォルトの名無しさん mailto:sage [2017/04/04(火) 20:22:21.70 ID:D5e7y0zT.net]
40行目、selected = tmpSelect;じゃなくてselected = new ArrayList<>(tmpSelect);じゃないか?

1013 名前:デフォルトの名無しさん [2017/04/04(火) 20:47:18.61 ID:I9HDP9Y0.net]
>>991
39行目でtrueの場合(値更新)のみselectedは更新されるので、それ以外ではFalseの影響は受けないと考えます。
デバグ走らせたけど、2回しかこの処理は通っていませんでした。

>>992
ありがとうございます。予想通りに出力されました。
しかし、なぜselected = tmpSelect;では出来なかったのでしょうか。

1014 名前:デフォルトの名無しさん mailto:sage [2017/04/04(火) 20:50:02.91 ID:y0EcmGB0.net]
次スレ
Java入門・初心者質問スレ Part.3
echo.2ch.net/test/read.cgi/tech/1491306071/

>>990
Thread.currentThread().isInterrupted()でなにをすると?
割り込みステータスじゃタイムアウトとnotifyの判別できないんじゃね?

1015 名前:デフォルトの名無しさん [2017/04/04(火) 22:43:40.74 ID:A2bdtwo3.net]
趣味でプログラミング始めようとして、一応入門書一冊読んだだけでプログラム作り始めました。
複数の入力に対して、計算結果を出力する泥アプリを作ろうとしています。
AndroidStrudioでエミュ起動するところまではできましたが、
Caused by: java.lang.NumberFormatException: Invalid int: ""はいています。
該当箇所は以下で、EditTextは入力を数字に制限しています。

EditText edit = (EditText) findViewById(R.id.edit);
String str = edit.getText().toString();
int num = Integer.parseInt(str);

TryCatchが必要のようなので、

String str = edit.getText().toString();
try {
num = Integer.parseInt(str);
}catch (NumberFormatException e){
num = 10;
}

としてひとまず代入が成功しているかのチェックも行いましたが、初期化された数字しか表示できません。
正しく自分の状況を説明できているかもわかりませんが、よろしくお願いいたします。

1016 名前:デフォルトの名無しさん mailto:sage [2017/04/04(火) 23:05:30.35 ID:rl/ytT5/.net]
>>995
edit.getText().toString()呼び出すタイミングが悪いのでは?
Activity.onCreate()とかで呼び出してるんじゃないかな
上記ならどのタイミングでEditTextに入力された値を扱いたいかが分からないとそれ以上のアドバイスはできないけど

1017 名前:デフォルトの名無しさん [2017/04/04(火) 23:24:24.85 ID:A2bdtwo3.net]
>>996
public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

int num1 , num2 ;

EditText edit = (EditText) findViewById(R.id.edit_ab);
String str1 = edit_ab.getText().toString();
num1 = Integer.parseInt(str1);

EditText edit2 = (EditText) findViewById(R.id.edit2);
String str2 = edit_hr.getText().toString();
num2 = Integer.parseInt(str2);

final float num0 = num1 + num2 / 100;

final TextView text = (TextView)findViewById(R.id.text);
Button button_done = (Button)findViewById(R.id.button);
button_done.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
text.setText(String.valueOf(num0));
}
});
}
}

一部割愛していますが、上記のような形になっています。
@Overrideの意味も理解できていない状況ですが、そのonCreateも影響しているのでしょうか。

1018 名前:デフォルトの名無しさん mailto:sage [2017/04/05(水) 00:29:20.89 ID:QXjM+MPV.net]
>>997
onClick()の中でnum1、num2取るように直してみな



1019 名前:デフォルトの名無しさん mailto:sage [2017/04/05(水) 00:35:55.27 ID:ft0BvTmE.net]
>>993
Cで言うポインタみたいなもんなのよ。
selected = tmpSelect;ってすると以降tmpSelect、selectedが同じインスタンスを指すようになる。
そうなると当然tmpSelectで行った変更はselectedでも見えるし、selectedで行った変更はtmpSelectでも反映される。
ttps://paiza.io/projects/P95uB_jQm3p0-qLv8Y7fuw

1020 名前:デフォルトの名無しさん [2017/04/05(水) 00:38:09.83 ID:/7gGEn2o.net]
>>989
staticおじさんの回答
https://paiza.io/projects/Z4PUIZZTxSSXqP8Xfs0fwQ

1021 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<268KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef