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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2019/03/09(土) 23:59:15.92ID:ACok0wnJ
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.8
http://mevius.5ch.net/test/read.cgi/tech/1528370228/
34デフォルトの名無しさん
垢版 |
2019/04/28(日) 20:47:23.73ID:Sci+vZGC
>>33
String[] easy = {"byte","int", ・・・};

って書き方でしょ、あってるよ
コンパイルも通るっしょ
35デフォルトの名無しさん
垢版 |
2019/04/28(日) 21:05:25.44ID:hq3/I6v+
>>34

あ。はい。通ります。。
2019/04/28(日) 23:53:38.93ID:f2XJNhgt
元号対応は終わりましたか?
37デフォルトの名無しさん
垢版 |
2019/04/29(月) 01:20:21.30ID:+dv4YRAe
>>36
俺んとこは西暦だけらしいからしてねぇみてぇだな。
2019/04/29(月) 10:07:56.34ID:KObxA37V
>>36
https://forest.watch.impress.co.jp/docs/news/1180549.html
39デフォルトの名無しさん
垢版 |
2019/05/15(水) 00:20:07.60ID:PMblo085
今Javaを独学で勉強してる者です。
現在、有名な「すっきりわかるJava2版」を購入しオブジェクト指向で躓いています。

最近IT関連のネット記事をチラチラ見てて、アンドロイドアプリの開発言語がJavaからKotlinに移行しているという記事が目に止まったんですよね。。

そこで質問なんですが、今からアンドロイドアプリを作ろうとするならばKotlinを学習する方が良いのでしょうか?
現エンジニアの方の意見をお聞きしたいです
2019/05/15(水) 00:53:40.43ID:VTab7Ety
プログラマになりたいならJava
Androidアプリだけ作れればいいならKotlin
初心者ならググれば何でも出て来るJavaの方が良いかも知れない
41デフォルトの名無しさん
垢版 |
2019/05/15(水) 01:19:59.30ID:PMblo085
>>40
やはり現状はjavaの方が情報量もあって良いんですね

プログラミングは趣味でやってみようかなと思ってます。〇の島のにゃんこみたく農業ゲームとか作ってみたいなと思ってますね。

自分の調べたところJavaが廃れることは当分なさそうですので引き続き頑張っていきます
ご返答ありがとうございました。
42デフォルトの名無しさん
垢版 |
2019/05/15(水) 09:35:49.15ID:k0yjAgrY
>>40
Kotlinはjaやnativeもあるから今後androidだけには収まらないと思うよ。
仕事で使うのでなくても覚えておいた方が良い言語になると思うが。
43デフォルトの名無しさん
垢版 |
2019/05/15(水) 09:36:34.44ID:k0yjAgrY
打ち間違えた。jaではなくjs。
2019/05/15(水) 11:05:37.17ID:lrxUfr9B
当時、Javaは自然に人気が出た感じがしたが、Kotlinは無理やり感がある。
45デフォルトの名無しさん
垢版 |
2019/05/15(水) 11:30:10.35ID:k0yjAgrY
無理矢理というか、Googleが採用してAndroidでのサポート始めたからそこで使う人が爆発的に増えたということだろうな。
Google採用がなければJava同様にじわじわと増えたのかも知れない。

あ、でも Java はインターネットと Java Applet で急に広まった感じするな。
当時まだ flash とか動くページ作れるやつがなかったか、あっても貧弱だったからだと思う。
JavScriptもたいしたこと出来なかったように思う。
2019/05/15(水) 16:02:58.22ID:lrxUfr9B
>>45
>Google採用がなければJava同様にじわじわと増えたのかも知れない。
うーみ。
47デフォルトの名無しさん
垢版 |
2019/05/15(水) 18:22:38.73ID:rgIB+CAi
なんだかよくわかっていないのが多いけど、Javaはクラスライブラリが画期的だった。マイクロソフトはクラスライブラリのセンスがなくてWindowsアプリケーション作りの環境をなかなか提供できなかった。

サンマイクロシステムズがJavaで正解を持ってきてくれたため、マイクロソフトは.NET frameworkを作れた。

その間はVisual C++のMFCか、計画性がまったくないクソ拡張をしてしまったVBによってアプリケーションが作られ混乱した。
2019/05/16(木) 00:01:31.90ID:jfYFXUay
>>47
確かにあなたの言ってることが一番正しい気がする。

話は変わるけど、Kotlinは、Javaではなく、JavaScriptに似ていて、
Script言語の方が初心者には受け入れられやすいから一見、多数決では
人気に有利に働いている可能性がある。しかし、大きなアプリを作ろうと
した場合、Javaの方が実は便利なのではないかと思う。さらに、
もっと深く進んでいくと、JavaよりもC++の方が便利、となっていく。
49デフォルトの名無しさん
垢版 |
2019/05/19(日) 20:30:00.66ID:LL140L7k
public static void main(String[] args) {
  List<String> arr = new ArrayList<>();
  arr.add("青森県"); arr.add("岩手県"); arr.add("宮城県");
  arr.add("秋田県"); arr.add("山形県"); arr.add("福島県");
  Collections.sort(arr, new Comparator<String>() {
    public int compare(String s1, String s2) {
      if (s1.compareTo(s2) > 0)
        return 1;
      else if (s1.compareTo(s2) < 0)
        return -1;
      else
        return 0;
    }
  }
  );
  System.out.println(arr);
}

[宮城県, 山形県, 岩手県, 福島県, 秋田県, 青森県]

なんですが、グーグルスプレッドシートで並び替えると

岩手県 宮城県 山形県 秋田県 青森県 福島県

になります。プログラム間違ってるでしょうか?それとも文字コードの違いかなんかですか?
50デフォルトの名無しさん
垢版 |
2019/05/19(日) 21:26:13.08ID:iZGlVtrY
>>49
JavaはUnicode順で
グーグルスプレッドシートはShift_JIS順ですね

Shift_JISで並び替えるならこれで
Collator collator = Collator.getInstance(Locale.JAPAN);
Collections.sort(ar r, collator);
51デフォルトの名無しさん
垢版 |
2019/05/19(日) 23:13:31.76ID:LL140L7k
>>50
そういうことができるんですね。勉強になりました。ありがとうございました。
2019/06/02(日) 17:56:20.99ID:BhlsUq43
スッキリわかるJava入門を購入して
javaを学ぼうと思うのですが
目標に基本情報技術者のjavaでの合格を目指そうと思っています。
調べたらみんな表計算らしいので
文系で初学者が無謀なんでしょうか?
53デフォルトの名無しさん
垢版 |
2019/06/02(日) 21:45:14.10ID:YGZ7q/QK
>>52
表計算が一番簡単だというのは昔の話で、いまは架空の表計算マクロの問題なので、これはこれで勉強が必要。

Javaの場合は標準ライブラリがコードに書かれているので、見慣れていないとわかりづらいが、問題そのものは簡単。
2019/06/02(日) 22:24:21.90ID:BhlsUq43
>>53 ありがとうございます。
正直、何か目標が無いと挫折しそうで・・・というか
前に1回挫折してるんですよね・・・
2019/06/02(日) 22:31:36.77ID:Kbt/vpV3
スッキリJava を読んで、たのしいRuby を読む。
それで、Ruby で、プログラミングのお題スレの問題を解く!

これがプログラミングを学ぶ、最速メソッドです!
56デフォルトの名無しさん
垢版 |
2019/06/03(月) 02:15:04.76ID:60TnqmAc
そうかなあ?
57デフォルトの名無しさん
垢版 |
2019/06/03(月) 06:08:57.07ID:9Z3fXRez
かなしいRubyの次にもう1つ本があった気がするけど何だった?
58デフォルトの名無しさん
垢版 |
2019/06/03(月) 20:33:01.29ID:547c+VB3
var ●● = iimGetLastExtract(1);
switch (true)
{
case /△△/.test(●●):
iimPlay("☆☆☆");
break;

特定のページ内にあるワードの有無でcaseを分岐させたいんですけど、検索するページを●●で指定しているのかわかりませんが機能しません。

●●にはいる値とは、作者の把握固めの値でいいのか、そのページを識別する値でないと駄目なのか、後者だとしたらそれはどこから抽出すればいいのでしょうか?

本を買ったりネットで調べても、そこにいれるべきは、なんなのかが書いてないです。
初心者入門的なものにも書いてないので、初心者以前の質問かもですが、ご教授ください
59デフォルトの名無しさん
垢版 |
2019/06/03(月) 21:07:40.36ID:yzctgd4R
>>58
それはJavaScriptじゃないかな
JavaとJavaScriptは違う言語だよ
ググってみたけどiMacrosみたいだね

iimGetLastExtract(1);
はiMacrosの値を読み込むってものらしいから
前のところで何を読み込んでいるのかによるんじゃないかな

いずれにしろJavaScriptのスレとかの方が回答付きやすいんじゃないかな
60sage
垢版 |
2019/06/03(月) 23:28:00.58ID:5eM1aUN1
>>59
そうです。imacros自体の本は出てないようで
javaの本とJavaScriptの本の中身をみた結果、コードの羅列的にjavaの応用なのかなと参考本買ったのですけど
JavaScriptでしたか・・・。改めて本屋覗いてみます。

回答有難う御座いました。
2019/06/04(火) 05:12:02.26ID://1XsOfQ
「imacros iimgetlastextract」「javascript test 正規表現」で検索!

web 制作管理板の、JavaScript のスレで聞いてください!
2019/06/04(火) 13:32:34.07ID:SCHdoxT1
>>61
有難う御座います。検索のほうしてみます。
かつJavaScriptの本買って駄目そうなら、そちらで質問させてもらいますm(__)m
63デフォルトの名無しさん
垢版 |
2019/06/04(火) 22:05:54.28ID:fUDGvTmK
Java で FullGC が頻発している場合、CPU負荷が高くなるけど、
vmstat でいう sy(システム時間)が高くなる傾向になるの?
それとも us(ユーザー時間)が高くなる傾向になるの?
64デフォルトの名無しさん
垢版 |
2019/06/04(火) 22:36:38.48ID:v51NU10y
>>63
http://luozengbin.github.io/blog/2014-11-05-%5B%E3%83%A1%E3%83%A2%5Dcms-gc%E3%83%AD%E3%82%B0%E3%81%AE%E8%A6%8B%E6%96%B9.html
[Times: user=0.01 sys=0.00, real=0.01 secs]

ユーザーみたいだよ
65デフォルトの名無しさん
垢版 |
2019/06/05(水) 14:28:44.34ID:kpVBEyPG
超絶初心者なのですが、どなたかご教授願います。

public static void main(String[] args) {

int num=Input.getInt("整数を入れてください");
System.out.println(num+ "を三乗すると" +modori(num)+ "です。");
}

public static int modori(int num) {
int c=num*num*num;
return c;
}
}


modoriメソッドでなぜcをreturnさせないと動かないのでしょうか?
66デフォルトの名無しさん
垢版 |
2019/06/05(水) 14:39:01.17ID:Fd++qFdy
>>65
そのメソッドはintを返すように書いてあるからretutnでint型の値を返さなければコンパイル時にエラーになる。
67デフォルトの名無しさん
垢版 |
2019/06/05(水) 14:46:35.27ID:kpVBEyPG
>>66
なるほど!つまりint c=num*num*num; を modori(int num) { 
に代入(?)してるっていう解釈で間違ってないですか?
68デフォルトの名無しさん
垢版 |
2019/06/05(水) 14:48:21.50ID:wlF7byMC
returnを書かない場合、cはmodoriの外に出られず呼び出し側に行かないから
69デフォルトの名無しさん
垢版 |
2019/06/05(水) 14:54:31.90ID:kpVBEyPG
>>68
わかりやすい解説に感謝です。
70デフォルトの名無しさん
垢版 |
2019/06/05(水) 22:57:36.09ID:Oz9gP13+
Java限定の話じゃないんですが・・・
ORマッピングする場合の、エンティティクラスは、テーブルに対応したものを作るべきですか?
アプリのUIの入力項目に、複数のテーブルから作ったビューをマッピングすることになる場合、
ビューに対応するエンティティクラスを作ればいいかと思ってるんですが・・・
2019/06/06(木) 01:03:38.54ID:Qxsak61t
エンティティは、テーブル構成と同じだろ

そう言えば、O/R マッパーで、複数の表を結合した、ビューは聞かない
72デフォルトの名無しさん
垢版 |
2019/06/07(金) 07:42:58.33ID:7sSNV2AB
普通にありえるだろ。
Hibernateなら、@Immutableってつけるだけだ。
まんまリードオンリーってことだ。
73デフォルトの名無しさん
垢版 |
2019/06/12(水) 20:44:05.38ID:WUwNpP1f
新垣結衣 AVデビュー
https://www.xvideos.com/video48369883/_ai_
2019/06/18(火) 01:25:13.33ID:lsSrdvBh
下記のコードを実行すると、10進数で10と表示されます。
これを2進数で00001010などと表示させたいのですが、
何か方法はありますでしょうか?
知っている方がいたらよろしくお願いします。

https://pastebin.com/bWeDy4fC
75デフォルトの名無しさん
垢版 |
2019/06/18(火) 10:35:34.91ID:Zdb+T+5j
java初心者です。現在オブジェクト指向で躓いています。とにかく読みまくって調べまくっ
てオブジェクト指向がどういう物なのか、どういう考え方なのかは理解できました。しかし
、「オブジェクト指向を使っプログラムをかけ」と言われてもまずどこから手を付ければい
いのかさっぱりです。ソースの例なんかを見ても何が起こっているのかわかりません。

”数字を入力させ、その数が10以上なら++するの繰り返し。10以下なら終了”

こう言われたならまず数字を入力させるんだな、scannerだな。繰り返しって事はforだな。
って分かるわけです。じゃあオブジェクト指向は...?なに?どこから手を付けるの?何が
どうなってるの?って感じです。どなたかご教授願えませんでしょうか...
2019/06/18(火) 11:02:31.53ID:uYARypJF
>>75
保持できる数値の下限が10の、Limit10Integerクラスを作ってみて、
そのクラス同士の演算、通常のIntergerやプリミティブなintとの演算を
考えてみては?
77デフォルトの名無しさん
垢版 |
2019/06/18(火) 12:11:55.61ID:Nrs9iyoB
別のクラスを作ってインスタンス生成してそれを使えばとりあえずオブジェクト志向
2019/06/18(火) 13:07:49.25ID:0BbKA5nK
プロパティとメソッドをまとめたものが簡単に作れるのがオブジェクト指向
クラスはあってもなくても
2019/06/18(火) 13:24:05.77ID:mXYzF1Lo
Javaのプロパティって
C++で言う所のクラスに内包された#defineみたいなもん?
2019/06/18(火) 22:16:58.34ID:6F1jEMoX
>>74
Integer.toBinaryString
81デフォルトの名無しさん
垢版 |
2019/06/19(水) 09:53:54.31ID:WYELJAwQ
>>74
ここ見ると色々なのが書いてある。
https://qiita.com/munieru_jp/items/6288988293958850bddd
82デフォルトの名無しさん
垢版 |
2019/06/19(水) 09:58:23.39ID:iiJCxGI/
0のパディングが必要だとけっこう難しい。
2019/06/19(水) 13:14:09.66ID:Vrcp6gjb
ふつうに2進数に変換した後に
"0000000" + 2進数 をsubstringで右から必要な桁数とれば?
84デフォルトの名無しさん
垢版 |
2019/06/19(水) 19:31:22.29ID:WYELJAwQ
そうか?足りない分だけ '0' 入れれば良いだけだが。
85デフォルトの名無しさん
垢版 |
2019/06/19(水) 19:32:36.84ID:WYELJAwQ
>>83
そうそう。それでもいい。(なんとなく無駄な感じはするが)
2019/06/19(水) 19:35:08.47ID:LjrNaYFo
Formatぢゃ駄目か
8774
垢版 |
2019/06/19(水) 20:33:34.72ID:fjMcPsgD
74です。
皆さんレスありがとうございます。

もう1つお聞きしたいのですが、コード内の変数binaryNumは2進数にして宣言して
いるのに、println()メソッドを使うと10進数表示になってしまうのは仕様でしょうか?
2019/06/19(水) 22:51:28.41ID:XyjBYhsR
数値リテラルを2,8,10,16進数のどれで設定してもintはただの符号付き32bitの数値なのよ
8974
垢版 |
2019/06/20(木) 00:58:18.65ID:jYC2boRB
>>88
分かりました。ありがとうございました。
2019/07/04(木) 11:06:38.70ID:EhGDYjCj
こんにちは。
Microsoft Java VM の仮想マシンを使っている者なんですが、
現在craving explorerを使っています。

そこで、craving explorerで
ツール→インターネットオプション→セキュリティタブ
信頼済みサイト→レベルのカスタマイズ→Microsoft VM →
Javaの許可→カスタム を押した後、

下にある「Javaカスタム設定」を押して未署名のコンテンツの実行を許可しようとしたところ
「Javaカスタム設定」を押した後に「craving explorerは動作を停止しました」と出てしまいます。

解決策を教えて下さい。

craving explorerでJavaカスタム設定を押して権限の編集及び未署名のコンテンツの実行に許可をしたいです。
2019/07/04(木) 11:50:09.28ID:PssGU1ho
>>90
それCravingExplorerからただ標準のインターネットオプションを呼び出してるだけだから
コントロールパネルとかから呼んで変更してからCravingExplorer起動してみるとか
2019/07/05(金) 10:41:49.74ID:KqqYGd5h
クラス型変数ってクラス定義さえしていれば、1個もインスタンスしてなくても使えるんだっけ?
2019/07/05(金) 22:20:53.99ID:ghv6m1Ey
yes
2019/07/13(土) 22:05:32.43ID:cGtMHMBe
streamに対する操作として、max(Comparator::natualOrder)みたいにメソッド参照で操作できますか。どの参考書にもComparator.natualOrder()を使ってるのですが
95デフォルトの名無しさん
垢版 |
2019/07/15(月) 07:34:57.55ID:rgXkaLbt
よく知らんが
そのCoparator class中のnaturalOrderがどう定義されてるかによるんじゃね
lambda memberとして定義さてりゃClassName.mamberNameだしfunction memberとして定義さてりゃClassName::memberNameなんじゃね
まぁ比べるやつ!なんて名前に冠してるクラスだし普通ラムダってるとは思うが
max funcのpredicate argとしてlambdaぶっこもうとしてるってことっしょ?(´・ω・`)
2019/07/15(月) 22:39:32.16ID:Kuj5dAbd
こんばんわ。
わかる方がいらっしゃれば、教えていただけないでしょうか。

当方、DBをACCESSとしてjavaを学んでいます。
その中で、以下のSQL文をjavaで実行しようとしました。

UPDATE SAMPLETABLE SET 工数 = ROUND(DAVG("予定工数","SAMPLETABLE","[プロジェクトcd]='" & [プロジェクトcd] & "' AND [ID]='" & [ID] & "'"),1)";

上記は、SAMPLETABLEテーブルの中の予定工数列の平均値(小数点第2位を四捨五入)を工数列に更新する内容で、ACCESS上では正常に動作することを確認済みです。
これをjavaで実行しようとしたときに、

sql = "UPDATE SAMPLETABLE SET 工数 = ROUND(DAVG(\"予定工数\",\"SAMPLETABLE\",\"[プロジェクトcd]='\" & [プロジェクトcd] & \"' AND [ID]='\" & [ID] & \"'\"),1)";
statement.executeUpdate(sql);

としたところエラーとなりました。
statement.executeUpdate(sql);
で何が実行されているか確認したところ、実行されているSQLは以下の通りでした。

UPDATE SAMPLETABLE SET 工数 = ROUND(DAVG([予定工数],[SAMPLETABLE],[[プロジェクトcd]='] & [プロジェクトcd] & [' AND [ID]='] & [ID] & [']),1)

どうも\"の組み合わせが大カッコとして認識されているらしく、ACCESSで正常に動作しないようでした。
SQL文内で"を使わなくてはならず、そうするとエスケープ文字の\が必要とある為、解決方法が見当たりません。
解決方法がわかる方がいらっしゃれば、ご教授いただけないでしょうか。
97デフォルトの名無しさん
垢版 |
2019/07/15(月) 23:37:21.19ID:pLaA1xVf
>>96
どういうドライバ経由で繋いでいる?
DAvgというAccess限定の特殊関数動くんかな
Criteria引数をその時の列の値で動的に生成してるんだろうけど
そんなの標準SQLにないからなあ

素直に
・プロジェクトCD毎の予定工数テーブルを作成
・上記と結合(またはサブクエリ)して更新
の2ステップにした方がいいと思う
(もしくはDAVG部分をサブクエリに書き換え)

ちなみにDBをACCESSとしてjavaを学ぶというのは特殊すぎて
ハマるポイントが多すぎると思われるのでお勧めしない
まだSQLiteの方がまし
2019/07/16(火) 01:15:57.24ID:bJ0hCkdA
Accessに使うSQL文は当然、SQL Serverと同様、マイクロソフト製品固有のSQL文になる
そのSQL文が正しく実行されるかはAccess内部でクエリーでも組んで実行しないと確証取れないよ
2019/07/16(火) 12:38:49.58ID:5QMM6YdW
>>97,98
レスありがとうございました。
ドライバはjdbc:odbcのことでよいでしょうか。
やはりACCESSは特殊なのですね。。。
2019/07/18(木) 14:16:42.66ID:Wn7Y5lJ2
>>99
JDCB以外で接続する方法は知らないな
と言うか実装上はJDCB活用する様にするのが普通
2019/07/18(木) 23:00:15.39ID:Bslws8K5
QueryRunner qr = new QueryRunner();
String sql = "SELECT A,B,C FROM HYO";
List<Map<String, Object>> MAP = qr.query(con, sql, new MapListHandler());

DBUtilsというライブラリを使用して上のようなコーディングをしましたが、
List<Map〜の箇所で後続の処理に行かずfinallyに抜けてしまいます。

おそらく何かしらのエラーが発生している為だと思うのですが、
} catch (SQLException exception) {
でも補足できませんでした。
例外処理もなかなか理解できておらず申し訳ないのですが、何が原因であるか
教えていただけないでしょうか。
情報が不足していたら申し訳ありません。
102デフォルトの名無しさん
垢版 |
2019/07/19(金) 00:27:59.11ID:7Hdy7m6i
>>101
ただの Exception で catch してスタックトレースでも出してみれば良いのでは?
2019/07/19(金) 09:50:09.93ID:6kfIPGJy
さっきJavaの更新したんだが、システムトレイからアイコンが消えなくなった
コンパネ開いてアイコンのチェックを外して適用、OKしても消えない、どうすりゃいいんだ
104デフォルトの名無しさん
垢版 |
2019/07/19(金) 10:14:21.50ID:uab/wKdg
Windowsならわからなくなったらまず再起動
2019/07/19(金) 10:19:27.05ID:6kfIPGJy
最初に再起動したけど何も変わりませんでした
106デフォルトの名無しさん
垢版 |
2019/07/20(土) 20:31:07.12ID:7rlJsNxm
以下ソースコードについてです。
要件としてはキーボード入力したデータの判定チェックをしたいです。
1.0点〜100点以外の入力はエラー ← ok
2.数字以外の場合はエラー ← ok
3.空白の場合はエラー ← これが以下ソースでは実装できず困ってます・・


try{
Integer inParam2 = Integer.valueOf(bufReader.readLine());
//0点以下、100点以上はエラーMSGを返す
if(inParam2 < 0 || inParam2 > 100 ){
System.out.println("0点〜100点の間で入力してください");
System.exit(1);
}else if (inParam2 == null){
System.out.println("点数は必須項目です。");
System.exit(1);
}else{
recordMap.put("国語",inParam2);
}
//数字以外をチェック
} catch (NumberFormatException e) {
System.out.println("数字を入れてください");
System.exit(1);
107デフォルトの名無しさん
垢版 |
2019/07/20(土) 21:31:21.73ID:OIy5RkDH
>>106
bufReader.readLine()のnullチェックを行えばいいよ
↓こんな感じ

String line = bufReader.readLine();

if (line == null) {
 // error
}

try{
 Integer inParam2 = Integer.valueOf(line);
 ・・・
108デフォルトの名無しさん
垢版 |
2019/07/21(日) 06:54:22.60ID:F3an1Rtm
>>106
え?例外にならない?
109デフォルトの名無しさん
垢版 |
2019/07/21(日) 07:49:53.60ID:vV2C3FTZ
null判定ブロック内のコードがデッドコードだって警告が出るんだけど、なんで?
2019/07/21(日) 10:13:28.63ID:MMp20sw3
>>109
プログラム見せて
111デフォルトの名無しさん
垢版 |
2019/07/21(日) 10:15:11.97ID:vV2C3FTZ
>>110
ああ、ごめんなさい。>>106さんのコードのことです。
112デフォルトの名無しさん
垢版 |
2019/07/21(日) 12:33:32.30ID:sWVeowg3
>>109
if(inParam2 < 0 || inParam2 > 100 ){

この条件はinParam2がnullでないことを前提としていて
inParam2がnullだったら例外が投げられるっしょ

}else if (inParam2 == null){

なのでこの条件にはたどり着かないんよ

if (inParam2 == null) {
} else if (inParam2 < 0 || inParam2 > 100 ) {
}

にすれば警告はでなくなるけど
Integer.valueOf(bufReader.readLine());
はnullを返すことはないんでinParam2 == nullは常にfalseになる

Integer.valueOfにnullを渡すとNumberFormatExceptionが投げられる

空白の場合は"点数は必須項目です。"と出力したいけれども
"数字を入れてください"と出力されてしまうのじゃないかな
113デフォルトの名無しさん
垢版 |
2019/07/21(日) 13:11:47.42ID:vV2C3FTZ
>>112
なるほどそういうことですか。分かりました。ありがとうございました。
114デフォルトの名無しさん
垢版 |
2019/07/21(日) 14:55:10.87ID:wDsV+h30
Scanner使えや。
115デフォルトの名無しさん
垢版 |
2019/07/23(火) 20:34:05.13ID:AvTpbtr4
https://pastebin.com/dEtCHVpv
MouseMotionListenerのgetMousePositionで、なぜnullがかえるのでしょうか?
116デフォルトの名無しさん
垢版 |
2019/07/23(火) 21:38:52.68ID:wzqbz6Qy
>>115
https://docs.oracle.com/javase/jp/6/api/java/awt/Component.html#getMousePosition()

Component がマウスポインタの直下にある場合、この Component の座標空間のマウスポインタの位置を返します。
そうでない場合は null を返します。

Component が画面に表示されていない場合は、Component が表示されている領域の上にマウスポインタがある場合でも、
このメソッドは null を返します。
117デフォルトの名無しさん
垢版 |
2019/07/24(水) 20:19:46.69ID:B4KdNqcy
>>116
ありがとうございました。
118デフォルトの名無しさん
垢版 |
2019/07/26(金) 18:40:59.98ID:04rT+FBz
File.lengthはint型で返すけど、もしintの範囲を超えるサイズのファイルが出たら例外吐いて終了するの?
119デフォルトの名無しさん
垢版 |
2019/07/26(金) 18:49:57.98ID:04rT+FBz
>>118
ごめん間違えた FileじゃなくてByteArrayOutputStreamだった
120デフォルトの名無しさん
垢版 |
2019/07/26(金) 20:25:37.66ID:nGdMwDcM
>>119
最大値はInteger.MAX_VALUE - 8
これを超えたらOutOfMemoryErrorがスローされるよ
121デフォルトの名無しさん
垢版 |
2019/07/26(金) 21:07:04.01ID:qsGDM8xF
今のjavaのINTEGERは64bitですか?
2019/07/26(金) 21:51:49.36ID:a4OzJI2P
32bit
123デフォルトの名無しさん
垢版 |
2019/07/26(金) 22:47:33.51ID:04rT+FBz
>>120
ありがとう
124デフォルトの名無しさん
垢版 |
2019/07/27(土) 23:50:15.80ID:AqzO7oC2
てか、配列の添字の限界って型に関係なくintの最大値だよね。
ByteArrayOutputStreamは中で本当にbyteの配列使ってるので配列の添字の最大を超えられない。
工夫すれば超えるのは作れるがそうなると今度は一つの配列として返す部分の変更が必要になる。

どうしても巨大配列が欲しい場合はしょうがないからlongの配列に自分で詰め込んでbyteの8倍の容量にするか、または配列の配列またはList作って自分で連結させるかになるかな。
2019/07/28(日) 15:01:48.98ID:WsOTjAcD
ソケット通信したいんだけどネットで調べてもsocketserverとかで普通にポート番号指定しているんだけど、ポートが他のアプリケーションとかで使われてないか調べたり空いてるポートを調べたりする処理は必要無いの?
通信関係疎くてわからない
2019/07/28(日) 17:45:18.42ID:GPK25ks7
>>125
確かにポート番号は、サーバ・クライアント間で共通のものをソフトであらかじめ決めておく、というのが普通ですね
ポート番号をころころ変えるソフトは見たことがありません

というかポート番号がサーバ・クライアント間であっているかどうかを調べる、というのはどうすればいいかな?合言葉を交換するとかかな?
2019/07/28(日) 18:19:43.68ID:WsOTjAcD
>>126
あーそうか
サーバーでポートを動的にしたらクライアント側がそのポート番号知りようがないか
すいませんでした
2019/07/28(日) 18:41:06.88ID:zX6zk1/V
FTPが制御用コネクションとデータ転送用コネクションを用いているように複数のコネクションを張るタイプのプロトコルであれば、
最初に確立するコネクション以外は動的に確保されたポートで通信するケースはあるよ

何れにせよ、
特定のポートが他のプロセスで利用されていないかを確認しても、
その後そのポートを開く前に他のプロセスがそのポートを開いてしまう可能性があるので(race condition)
どの道、ServerSocketを開こうとした際に失敗することを考慮しないといけない
2019/07/28(日) 19:09:49.47ID:WsOTjAcD
>>128
なるほど複数接続するやつならそうしないとダメですよね
受付みたいな
ありがとうございました
130デフォルトの名無しさん
垢版 |
2019/08/01(木) 12:03:25.91ID:aVYnxNEs
java.beans.XMLEncoder で getter/setter のあるオブジェクトを書くとちゃんとXMLファイルができて中にデータが入っているのですが、その XML ファイルを XMLDecoder の readOblect() で読もうとすると java.lang.ClassNotFoundException が出てしまい読めません。
classpath でクラスのあるディレクトリを指定したり直前で Class.forName() でクラスを読んでいても同じです。
これはどうやったら正常に読めるようになるのでしょうか?
2019/08/01(木) 18:29:09.43ID:iHxbPEOX
>>130
XMLDecoderに渡してるInputStreamが正しいか確認したほうが良い気がする
ちょっと試してみたけど、普通に読めるよ
132デフォルトの名無しさん
垢版 |
2019/08/01(木) 20:29:11.30ID:aVYnxNEs
>>131
普通にファイルから読もうとしているだけなので問題ないと思うんだけど。うーん。

ところでそのうまく行ったプログラムは読み書きが別々に動くように書いてあって別々に起動して書くだけ、または読むだけが動くようになってますか?
それとも書いて読むという順序になっている一つのプログラムですか?

というのは、色々検索して探していたらクラスローダの問題と書いてあるページを見つけたからです。
(かといってどうすれば良いかまだよくわからない)。
2019/08/01(木) 21:25:46.03ID:iHxbPEOX
>>132
com.example.test.XMLEncoderTest, XMLDecoderTestそれぞれのmainメソッドで
Stringとintのフィールが1つづつのTestBeanをtest.xmlに書いて読むだけ
動かないわけがないぐらいシンプルなもの

こんなのだったらそちらでも問題なく動くと思うけど、
それが(仮に)動いて、今トラブってるのが動かないのであれば、
XMLDecoderを使う箇所以外のコードか環境が原因じゃない?

#それか単純に間違ったXMLファイルをロードしちゃってるか(以前にテスト用に作ったクラスをXMLEncodeしたファイルとか)
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況