X



Java入門・初心者質問スレ Part.11
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (アウアウウー Sa07-jGB0)
垢版 |
2021/06/29(火) 11:42:34.74ID:iGYT4fi4a
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.10
https://mevius.5ch.net/test/read.cgi/tech/1585721355/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
0040デフォルトの名無しさん (ワッチョイ bfe8-U9fS)
垢版 |
2021/09/18(土) 22:44:08.26ID:0vsZVB8h0
>>16
俺はProcessingにJavaのライブラリインポートして
ControlP5乗っけてGUIアプリ作ってる
0042デフォルトの名無しさん (ワッチョイ ffba-5CsD)
垢版 |
2021/09/20(月) 19:14:00.53ID:S8CEwZLU0
JPanelのインスタンスに巣複数個のJButtonを追加しており、各ボタンをプログラム上でクリック処理してみたいのですが、
どのようすればいいのでしょうか?
0043デフォルトの名無しさん (ワッチョイ ffba-5CsD)
垢版 |
2021/09/20(月) 19:49:30.57ID:S8CEwZLU0
自決しました。
for (Component c : getContentPane().getComponents()) {
if (c instanceof JButton) {
}
}
で大丈夫かと思います。失礼いたしました。
0045デフォルトの名無しさん (ワッチョイ 775f-+OLq)
垢版 |
2021/09/20(月) 23:36:43.05ID:qrQnPgn70
もう死んだと思うよ。
0046デフォルトの名無しさん (ワッチョイ b71d-W1il)
垢版 |
2021/09/21(火) 16:26:42.55ID:EACgI9Q10
質問です

// インデントはアンダースコアで表しています
public class MyClass {
__private final int num;
__public MyClass(int num) {
____this.num = num;
__}
__…
}

という文はエラーにならないですか?
変数numは、宣言時ではなく、コンストラクタに渡された瞬間から
定数扱いになるという理解でよろしいですか?
0047デフォルトの名無しさん (ワッチョイ 97f0-5CsD)
垢版 |
2021/09/21(火) 17:45:45.35ID:Z8q69Dvg0
blank final ね。大昔の 1.1 だか 1.0 あたりだとエラーになるんだっけか?

宣言された瞬間から(初期化されていない)定数扱い。
コンストラクタ(もしくはインスタンス初期化子)でないと初期化できない。
全てのコンストラクタで初期化されていないとコンパイルエラー。

コンストラクタ(もしくはインスタンス初期化子)以外の場所では初期化済み扱いになる。
005146 (ワッチョイ b71d-W1il)
垢版 |
2021/09/21(火) 23:06:07.07ID:EACgI9Q10
答えてくれた方、ありがとうございました
コードはFE試験を参照して抜き出しました、難解ですね…
005346 (ワッチョイ b71d-W1il)
垢版 |
2021/09/21(火) 23:48:58.74ID:EACgI9Q10
>>52
滅相もない…
読んでてよく理解できない箇所があったのでお聞きしただけですよ
0054デフォルトの名無しさん (ワッチョイ 9fad-QxrA)
垢版 |
2021/09/22(水) 13:30:08.07ID:Te29kBsr0
賢人?
0055デフォルトの名無しさん (ワッチョイ d75f-vKa4)
垢版 |
2021/09/23(木) 00:16:07.48ID:7zkOaZtd0
csvで¥,(カンマをエスケープしている)が含まれるデータを読み込みたいのですが
いつも通りにスプリットしてもエスケープ文字が邪魔します
何か良い方法ありませんか?
一つは¥,を全く別に置き換えてから
再度置き換えるなどを考えてます
0058デフォルトの名無しさん (ワッチョイ 1202-r+Xa)
垢版 |
2021/09/25(土) 19:05:34.60ID:wk1a5X2V0
客先(エンドユーザ)がどうしてもExcel使いたい場合などは解るが
システム間のデータやり取りCSVみたいなフォーマット要求してくる
アホなソフト屋どうにかしてほしいわ
0059デフォルトの名無しさん (ワッチョイ de01-qci3)
垢版 |
2021/09/26(日) 22:53:38.34ID:K0n5mMQr0
>>55
\,を別の文字に置き換えるのがよいと思う

\がエスケープ文字に使われてるので
「\ + 任意の文字」に置き換えればいい

任意の文字はカンマ以外で他のエスケープシーケンスと被らなければ何でも良い
\cとかがわかりやすくていんじゃないかな

,でスプリットして要素を復元するときに\cを,に変換する感じ

\ → \\
, → \,
に変換されてるとするなら、こんな感じでreplaceだけで完全に復元できるはず
https://paiza.io/projects/JmNXy546I6CrIn48Z9L0kQ
0060デフォルトの名無しさん (ワッチョイ de01-qci3)
垢版 |
2021/09/26(日) 22:56:50.47ID:K0n5mMQr0
>>58
どういう形式が良いのかな?
0061デフォルトの名無しさん (ワッチョイ de01-qci3)
垢版 |
2021/09/26(日) 23:20:41.67ID:K0n5mMQr0
>>59
ごめんこれ間違ってた、取り下げます
0062デフォルトの名無しさん (ワッチョイ 162c-pveB)
垢版 |
2021/09/26(日) 23:57:45.54ID:5RNiLxHe0
CSV/TSV, JSON, YAML は一般的

これらの構造物に正規表現を使うのは、おかしい。
パーサーを使うべき

各データ(要素)内に、行区切り文字・列区切り文字・クォート文字などの特殊文字がある場合は、
その要素をクォート文字で囲む必要がある
0063デフォルトの名無しさん (ワッチョイ de01-qci3)
垢版 |
2021/09/27(月) 00:23:48.63ID:Rw+VRmCj0
>>55
修正しました
https://paiza.io/projects/JmNXy546I6CrIn48Z9L0kQ

\ → \\
, → \,
と変換されてる場合は

\\ → \ + 任意の文字
\, → \ + 任意の文字
の順番でreplaceすればOK
0064デフォルトの名無しさん (ワッチョイ de01-qci3)
垢版 |
2021/09/27(月) 00:30:10.03ID:Rw+VRmCj0
>>62
クオートで囲むのはCSVがRFC4180に従ってる場合でしょ
エスケープするのはRFC4180の形式ではないよ
エスケープするならクオートで囲む必要はないよ

RFCのCSVは扱いにくいんだよね
テキストの行数とCSVのレコード数が一致しないしパーサも結構複雑

エスケープ方式の方があきらかにコンピュータで処理しやすい
CSVのRFCは人類の負の遺産だと思う
006562 (ワッチョイ 162c-pveB)
垢版 |
2021/09/27(月) 01:15:28.39ID:nw6SPL1Y0
基本、自作したものは、バグるので使えない

CSV/TSV, JSON, YAML などは一般的だから、
たいていの言語の標準ライブラリにある

車輪の再開発はダメ。
開発・テストコストが掛かって、低品質になるから使えない
006662 (ワッチョイ 162c-pveB)
垢版 |
2021/09/27(月) 01:29:19.77ID:nw6SPL1Y0
例えば、Ruby のCSV で、
各要素内に、行区切り文字(改行)・列区切り文字(カンマ)・クォート文字(ダブルクォーテーション)がある場合。
要素内のクォート文字" は、連続する" で出力される

require 'csv'

input = <<"EOT"
"a""a","b,b",あ
"c
c","d\nd"
EOT

p input_ary = CSV.parse( input ) # 2次元配列
#=> [["a\"a", "b,b", "あ"], ["c\nc", "d\nd"]]

# 2次元配列を、CSV 文字列に変換する
csv_str = input_ary.map( &:to_csv ).join
puts csv_str

出力
"a""a","b,b",あ
"c
c","d
d"
0067デフォルトの名無しさん (ワッチョイ de01-qci3)
垢版 |
2021/09/27(月) 01:29:35.52ID:Rw+VRmCj0
>>65
Javaの標準ライブラリにはないよ
ここはJavaのスレだよ

ドメイン特化な軽量フォーマットを作るのは僕はありだと思うけどなあ
他人が作ったものが高品質とも限らないし標準ライブラリがバグってることもあるよ
ケースバイケースかな
0068デフォルトの名無しさん (ワッチョイ de01-qci3)
垢版 |
2021/09/27(月) 01:32:17.39ID:Rw+VRmCj0
>>66
それはRFCに従ってる感じっすね
RFCのCSVはテキストの行数とCSVの行数が一致しないから
grepコマンドでレコードを検索できないしwcコマンドでレコード数を調べることもできない
はなはだ使いにくいと思うんだよね、いわば前例踏襲だけで生き残ってるゴミ仕様だと思うんだよね、SMTPと同じですわ
もうええやろって思う
0069デフォルトの名無しさん (ワッチョイ de01-qci3)
垢版 |
2021/09/27(月) 01:39:54.38ID:Rw+VRmCj0
ちなみにJavaの標準ライブラリのString.splitは末尾の空文字列を無視するから
CSVのパースに使うと列の数が変わってしまう
標準ライブラリでもクセがあるから注意
車輪の再開発はケースバイケースだよ

いびつな車輪で走り続けるよりも、よりよい車輪を作って走ったが良いこともある
車輪の再開発だからダメだ、良いのだというものではないという話
0071デフォルトの名無しさん (ワッチョイ de01-qci3)
垢版 |
2021/09/27(月) 01:51:45.00ID:Rw+VRmCj0
>>70
replaceするだけの処理にライブラリ使ったら負けだと思う
0072デフォルトの名無しさん (ワッチョイ de01-qci3)
垢版 |
2021/09/27(月) 02:05:54.38ID:Rw+VRmCj0
RFCのCSVを読む場合はライブラリ使ったが良いだろうね
僕はふだんSuper CSVを使ってる

スピード重視ならuniVocityかSimpleFlatMapperかな
Super CSV、Opencsv、Apache Commons CSVは処理が遅い
0074デフォルトの名無しさん (ワッチョイ de01-qci3)
垢版 |
2021/09/27(月) 02:18:17.85ID:Rw+VRmCj0
>>73
お給料はどうやろうと変わらないっしょ
実利なんてないんですよ、好きにしたらええでしょ
0075デフォルトの名無しさん (ワッチョイ de01-qci3)
垢版 |
2021/09/27(月) 02:19:08.32ID:Rw+VRmCj0
僕はCSVのこと好きですけどね
Oracleの100倍好き
0076デフォルトの名無しさん (ワッチョイ 1202-r+Xa)
垢版 |
2021/09/27(月) 03:12:19.72ID:OxF6exWm0
CSVなど要求してくるところは仕様にエンコーディングすら記載してない
確認するとTextファイルはShift_JISが当たり前と思ってるアホで
フィールド長要件もShift_JIS換算バイト数だったりして糞面倒くさい
俺は大嫌いだ、CSVのコードなど1秒も時間かけたくないね
0077デフォルトの名無しさん (ワッチョイ 12ad-ZF+H)
垢版 |
2021/09/27(月) 03:13:53.15ID:lACGcuZa0
CSV入出力は自作しないでライブラリ使うなあ。
ていうかCSVに限らずライブラリあるならそれ使って入出力をする。
学習や趣味であえて自作する場合は別として。
0078デフォルトの名無しさん (ワッチョイ 12ad-ZF+H)
垢版 |
2021/09/27(月) 03:17:48.77ID:lACGcuZa0
>>76
多分そういうのってWindowsのExcelで読みたいんだろうね。あれCSVの拡張子にしとくとシフトJISとして読んでくれるので。TXTにしとけばウィザードになって文字コード指定も出来るけどな。
0079デフォルトの名無しさん (ワッチョイ de01-qci3)
垢版 |
2021/09/27(月) 03:21:30.20ID:Rw+VRmCj0
ExcelはBOM付きのUTF-8なら文字化けせずに開けるはず
008162 (ワッチョイ 162c-pveB)
垢版 |
2021/09/27(月) 05:30:09.04ID:nw6SPL1Y0
確かに、RFC のCSV は、
grep, wc などで、簡単には使えない

でも一般的だから、色々なアプリで読み込めるし、可搬性も高い
0082デフォルトの名無しさん (ワッチョイ 12b9-Ofnx)
垢版 |
2021/09/27(月) 13:15:39.03ID:te5SiAqx0
MinecraftでModの開発をしていたのですが昨日から突然コンパイルができなくなり,

>Process 'command 'C:\Program Files\Java\jdk1.8.0_251\bin\java.exe'' finished with non-zero exit value 1

というメッセージが表示されます. 調べてみたところ開発環境に問題があるようなんですが具体的に何が原因なのか分かりませんし,何かそういう操作をしたような覚えもありません.

開発環境としては1年前にインストールしたJDK1.8.0_251なんですが,別のバージョンで試した方がいいでしょうか? 原因や対処法わかる方いましたら教えて頂きたいです.
0085デフォルトの名無しさん (ワッチョイ de01-qci3)
垢版 |
2021/09/27(月) 14:22:43.64ID:Rw+VRmCj0
Gradleでビルドから実行までやってるんじゃないかなと思った
0086デフォルトの名無しさん (ワッチョイ 12b9-2yZa)
垢版 |
2021/09/27(月) 16:42:19.91ID:te5SiAqx0
>>83
レスありがとうございます
MOD_IDをmods.tomlに合わせて変えてみたんですが,Minecraftが起動すると

mods.toml missing metadata for modid ○○

と表示されて先に進めないです…

---- Minecraft Crash Report ----
// Don't be sad, have a hug! <3

Time: 21/09/27 16:34
Description: Mod loading error has occurred

java.lang.Exception: Mod Loading has failed
0087デフォルトの名無しさん (ワッチョイ 12ad-ZF+H)
垢版 |
2021/09/27(月) 23:57:28.99ID:lACGcuZa0
>>79
あー。UTF-8のBOM入りってそこで使えるのか。
あんな無駄なもん何処で使うんだろうと思ったら。
0088デフォルトの名無しさん (ワッチョイ 12ad-ZF+H)
垢版 |
2021/09/28(火) 00:00:21.68ID:qy0bUCok0
>>81
CSV用のgrepってあったらいいよな。
ライブラリ使えば簡単そうだからお題スレに出しておくかな。
0090デフォルトの名無しさん (ワッチョイ 6f71-+xwn)
垢版 |
2021/09/28(火) 10:04:42.17ID:4vkyN+pB0
Java演習問題(継承)について教えて欲しいです。(初心者です)

・スーパークラス
メンバ変数(private int):a,total
aのgetter,aのsetter

・サブクラス
メンバ変数(private int):b,c
b,cのコンストラクタ
メソッド(public):calculate (処理はtotal=b*c)

・実行用クラス
サブクラス test =new サブクラス(10,2)
test.calculate()

このときに、実行すると、
スーパークラスのtotalが参照できないとエラーがでます

解答例としては、サブクラスのcalculateメソッドが、
public void calculate(){
int total =b*c
setTotal(total)


となっているのですが、直接スーパークラスのメンバ変数totalに入れずに、
サブクラス内で別領域を作成して、それをsetする理由がよく分からないです...
0091デフォルトの名無しさん (ワッチョイ 6f71-+xwn)
垢版 |
2021/09/28(火) 10:15:11.29ID:4vkyN+pB0
↑訂正します。スーパークラスのsetter getterはaではなく(誤)、totalのsetter getterです。
0092デフォルトの名無しさん (ワッチョイ 12ad-ZF+H)
垢版 |
2021/09/28(火) 10:22:29.05ID:wFK5NO290
>>89
使った方が楽じゃん。
0093デフォルトの名無しさん (ワッチョイ 12ad-ZF+H)
垢版 |
2021/09/28(火) 10:25:15.08ID:wFK5NO290
>>90
privateだからでは?
0094デフォルトの名無しさん (ワッチョイ 6f71-+xwn)
垢版 |
2021/09/28(火) 11:24:23.77ID:4vkyN+pB0
>>93
エラーとしては、「不可視です」と出力されるのですが、ググると、priveta をpublicで緩和するか、setterやgetterがあるか確認してなければ作成を検討する、という方法を見つけました
スーパークラスにtotalのsetterやgetterがあるのに何故かなと思って質問させてもらっています
0095デフォルトの名無しさん (ワッチョイ 1202-r+Xa)
垢版 |
2021/09/28(火) 13:54:13.60ID:mjYKbk3t0
getter/setterあるのに代入文使えないのは何故っての質問の意図か?理解するの難解すぎるw
javaには多言語にあるようなプロパティ構文はないgetter/setterといっても単なるメソッド
0096デフォルトの名無しさん (ワッチョイ 1202-r+Xa)
垢版 |
2021/09/28(火) 14:12:30.02ID:mjYKbk3t0
setter/getterを単なるメソッドというと誤解あるか?
フレームワーク使ったりJ2EEな領域になるとルールになる場合もあって説明が難しい
その様式はカルチャー以上、文法未満、どうせショートカット一発自動生成
0097デフォルトの名無しさん (ワッチョイ 6f71-+xwn)
垢版 |
2021/09/28(火) 18:57:17.79ID:4vkyN+pB0
>>96
色々後出しで申し訳ないです。
そもそも代入出来ないため、一旦別領域を経由して再度変数を入れないといけない、と理解しました。
助かりました、ありがとうございます。
0102デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/02(土) 15:30:22.99ID:WlTxiTfu0
switchは条件分岐に使う
条件分岐はifでもできる

switchはパターンマッチが強化されたら関数型のような
書き方ができるから伸びしろがあるのはswitch
0103デフォルトの名無しさん (ワッチョイ f35f-snkv)
垢版 |
2021/10/02(土) 20:21:15.14ID:ZE+9BIP70
>>99
C言語にあったから
0104デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/02(土) 20:41:45.48ID:WlTxiTfu0
for文があるからwhile文ももういらんのよね
0106デフォルトの名無しさん (ワッチョイ 8301-BBkf)
垢版 |
2021/10/02(土) 22:07:51.96ID:2yc9IrR20
>>105
long long agoもあるよ。
0109デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/03(日) 00:26:31.00ID:Oa9plM340
>>107
for (;;) {
}
で代替できるので
0110107 (ワッチョイ 531d-Q4Ob)
垢版 |
2021/10/03(日) 00:41:26.50ID:p2o58jTf0
>>109
主観の問題になるけど、while文の方がスマートな記述になる気がする
それとdo while文を使いたい時はどうするの?
0111デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/03(日) 01:12:34.63ID:Oa9plM340
>>110
for (int i = 0;;) {
System.out.println(i);
i++;
if (i >= 10) {
break;
}
}
こうですね
0113デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/03(日) 01:58:45.95ID:Oa9plM340
うぅ…
0115デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/03(日) 02:39:59.67ID:Oa9plM340
>>114
1/2の確率でループする場合は終端があると思いますか?
0118デフォルトの名無しさん (アウアウウー Sa27-jOtc)
垢版 |
2021/10/03(日) 10:49:09.01ID:oCTMWA/sa
while使うなっていうのは
goto使うなと同じくらい原理主義でニワカっぽい
0119デフォルトの名無しさん (ワッチョイ cf10-lQk+)
垢版 |
2021/10/03(日) 13:26:53.72ID:FWk37WA/0
なんつーかこういう言ってることが理解できないバカが安易にwhile使うんだよな
主義とかどうとか以前にwhileっていう選択肢を選んだ時点で無駄に一つの不安要素を抱えるから
一般的な思考してたら終端ないようなやむを得ない場合でしか使わないんだよな
クッソ単純な条件ループなら妥協できないわけでもないがわざわざ使わない
だから経験浅い奴ほどなんの不安も抱かないから安易に使う
0120デフォルトの名無しさん (ワッチョイ cf10-lQk+)
垢版 |
2021/10/03(日) 14:07:00.12ID:FWk37WA/0
可読性とのトレードオフならまだわかるけど経験浅い奴はそういう事なんて当然考えてるわけもなく
動けばいいや的なソースコードを思うがままに書く

素人が業務でよくやる思考停止2大案件
思考停止大量フラグ
思考停止大量ネスト
0121デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/03(日) 18:26:56.21ID:Oa9plM340
なんで経験浅い人の話ばかりするんだ
0123デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/03(日) 19:03:44.05ID:Oa9plM340
>>122
君のほうが経験浅そう・・・
0124デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/03(日) 19:03:56.33ID:Oa9plM340
だって浅いんだもん
0125デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/03(日) 19:05:00.68ID:Oa9plM340
whileを書いてるからダメだ ← これが思考停止でなくて何だってこと
0126デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/03(日) 19:07:37.47ID:Oa9plM340
ソースコードは好きに書いたらええ ← 経験深い僕の言葉
0128デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/03(日) 19:11:18.10ID:Oa9plM340
>>127
while使ったらダメだって君は考えてるってことだよね
完全に理解したよ、君はwhileに不安を感じてるから
whileは書くべきではないって思ってるわけだけよ
君のレベルが低いだけ
0129デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/03(日) 19:11:52.77ID:Oa9plM340
学生の僕よりレベル低いプログラマがwhile禁止の自分ルールを語るほど浅いことはないです
0131デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/03(日) 19:18:42.62ID:Oa9plM340
>>130
あなたは大人じゃないですね
歳だけは重ねてるかも知れませんが言ってることが浅すぎるので
そういう浅い経験しか積んでこなかった人です

whileに不安を覚えているあなたの方がプログラム向いてないです

ここで一句

プログラマ、若い人ほど頭が良い
0133デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/03(日) 19:20:13.20ID:Oa9plM340
あぁ〜whileが書いてあるよどこでループ抜けるかわからないよガクガク ← アホ丸出しですw
0135デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/03(日) 19:22:25.14ID:Oa9plM340
素人が業務でよくやる思考停止3大案件(大きい順)

・思考停止while禁止
・思考停止大量フラグ
・思考停止大量ネスト
0136デフォルトの名無しさん (ワッチョイ cf10-lQk+)
垢版 |
2021/10/03(日) 19:24:56.32ID:FWk37WA/0
大好きなwhile否定されただけでこのファビョりようw
すげぇガキだな・・w
読解力もスキルもないくせにプライドだけはこんなエベレスト級だと
社会出たら速攻で自分の頭の悪さに嫌気さして自殺するんじゃねぇかな
まぁそもそもこれじゃ肉体労働しかなさそうだから関係ないかw
0137デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/03(日) 19:25:57.24ID:Oa9plM340
>>136
あなたはニコニコ動画観てそうな自称大人の人って印象です
0138デフォルトの名無しさん (ワッチョイ 6f01-vGIA)
垢版 |
2021/10/03(日) 19:30:18.35ID:Oa9plM340
ドワンゴ関係者かな? なんかちょっとそういう気がしたので
■ このスレッドは過去ログ倉庫に格納されています

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