Java入門・初心者質問スレ Part.11
■ このスレッドは過去ログ倉庫に格納されています
次スレを立てる時は本文の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 System.out.printlf(">>1乙"); java12をインストールしてるPCで動かすんですけど
java9でビルドしたモジュールを動かすのと
java12でビルドしたもの動かすのの違いある?
java12でビルドし直すの大変なんですが 830と1830を下記で実行するとどうなりますか?
setscale(-2、0)
setscale(-2、1) BufferedImage bf = null;
try {
bf = ImageIO.read(new File("C:\\Users\\CS\\Desktop\\imgs\\01.jpg"));
} catch (Exception e) {
System.out.println(e);
}
で画像ファイルを読み込もうとしているのですが、
javax.imageio.IIOException: Can't read input file!
Exception in thread "main" java.lang.NullPointerException
at imageProcesser.ImageProcesser.main(ImageProcesser.java:19)
とエラーが出て、ファイルが読み込めません。
画像ファイルはそのディレクトリにあるので、間違いはないと思うのですが、
何が原因なのでしょうか? >>9
ファイルがおかしいんじゃないかな、ペイントで保存し直してみたらどうだろ >>10
ペイントで保存し直しましたが、同じエラーが出ます。 そのファイルは読み込めないというエラーが出ているのだからファイルがおかしいと考えるのが自然
jpgじゃなくてbmpにするとかパス文字列が間違ってる可能性を疑ってcドライブの直下を読み込むとかやってみたら >>12
C:/Users/CS/Desktop/imgs/01.jpg
で試しても同じエラーでした。
>>13
Cドライブの直下に当該ファイルと新規作成したファイルを置き、ファイル存在を確認したところ、存在しない状態であることが分かりました。
Eclipseやコード自体はDドライブで実行しており、対象ファイルはデスクトップに置いている状態でが、パスなどの設定が必要だったのか調べてみます。
>>14
承知致しました。 JavaでGUIアプリを作りたいのですが、JavaFXが今の流行なんでしょうか?
eclipseでJavaFXのプロジェクト作ってみたのですが、動かずでして。
JavaFXは標準のJavaから外れてしまったのが面倒。
swingの方がいいんでしょうか。 JavaでGUIを作らない
というのが今の流行だな どうか教えてください
以下のようにarrayList要素を2つ含んだarrayListがあります。
alist = [["a","b","c"],["d","e","f"]]
["a","b","c"]を取得したい場合は以下です。
alist.get(0);
ではarrayList["d","e","f"]の"d"を取得したい場合はどのように書けばいいのでしょうか?
alist.get(0).get(0)とは書けませんでした。 blist = alist.get(1);
blist.get(0); 仕事でパイソンでスクレイピングしてるんやけどJavaで作ったHPに苦戦してる。何か参考になる本とかHP無いかな?(^_^;) 何に苦戦してて何を知るための本を探してるのか分からんな
○○で作ったHPってのも言語というよりフレームワークの方が重要じゃね
JavaScriptをJavaと言ってる可能性も否定できない スクレイピングで苦戦してるっていうなら、動的コンテンツが取り込めないとかじゃないかと勝手に推測 >>21
.jspのページって事?
ここはJava入門・初心者質問スレなので
Pythonスクレイピングの質問はPythonスレへどうぞ >>24
そうですそうです、セレニウムでとれるけど遅いし(^_^;)
もっとはやくと思って、でもまなんとかなりそう GUIで
--------------------------------------------------------------------
| -------------------------------- ------- |
| フォルダ: |※ここにフォルダパス表示 | |開く | |
| -------------------------------- ------- |
| |
| |
| -------------------------------- ------- |
| フォルダ: |※ここにフォルダパス表示 | |開く | |
| -------------------------------- ------- |
| |
| |
--------------------------------------------------------------------
のようなものを作りたいのですが、何かいい既存のクラスなどありますでしょうか?
※ユーザーが「開く」を押下してフォルダを選択したら、そのフォルダパスが表示されたい >>27
そんな古典のようなものをなぜこんなところで聞くのか? SWINGでいいんじゃないの
最近のGUI事情知らんけど >>27
visualエディタでbeansを使いましょう Javaの入門書でこれは止めとけって本があったら教えて下さい >>32
入門なのか実践(応用)なのかどっちかわからん
>>31 レスありがとうございます
今買おうか迷っている本は、「独習Java」と
「Java 入門編 ゼロからはじめるプログラミング」です(ともに翔泳社)
この2冊について読んだことのある方は感想とか頂けるとありがたいです >>35
ひとつだけ言えることは
アプレットが非推奨な今
どっちもGUIにはたどりつかないよ >>36
分かりました
FEへの合格が当面の目標です >>16
俺はProcessingにJavaのライブラリインポートして
ControlP5乗っけてGUIアプリ作ってる JPanelのインスタンスに巣複数個のJButtonを追加しており、各ボタンをプログラム上でクリック処理してみたいのですが、
どのようすればいいのでしょうか? 自決しました。
for (Component c : getContentPane().getComponents()) {
if (c instanceof JButton) {
}
}
で大丈夫かと思います。失礼いたしました。 質問です
// インデントはアンダースコアで表しています
public class MyClass {
__private final int num;
__public MyClass(int num) {
____this.num = num;
__}
__…
}
という文はエラーにならないですか?
変数numは、宣言時ではなく、コンストラクタに渡された瞬間から
定数扱いになるという理解でよろしいですか? blank final ね。大昔の 1.1 だか 1.0 あたりだとエラーになるんだっけか?
宣言された瞬間から(初期化されていない)定数扱い。
コンストラクタ(もしくはインスタンス初期化子)でないと初期化できない。
全てのコンストラクタで初期化されていないとコンパイルエラー。
コンストラクタ(もしくはインスタンス初期化子)以外の場所では初期化済み扱いになる。 newする度に変更される可能性のある変数をどうしてfinalにできようか ああ、static付いてない場合か
すまん忘れてくれ 答えてくれた方、ありがとうございました
コードはFE試験を参照して抜き出しました、難解ですね… >>52
滅相もない…
読んでてよく理解できない箇所があったのでお聞きしただけですよ csvで¥,(カンマをエスケープしている)が含まれるデータを読み込みたいのですが
いつも通りにスプリットしてもエスケープ文字が邪魔します
何か良い方法ありませんか?
一つは¥,を全く別に置き換えてから
再度置き換えるなどを考えてます >>55
それは否定的後読みを使えば良いだろう
split("(?<!\\\\),") アホくさライブラリいくらでもあるだろ、いかにコード書かないかが勝負な 客先(エンドユーザ)がどうしてもExcel使いたい場合などは解るが
システム間のデータやり取りCSVみたいなフォーマット要求してくる
アホなソフト屋どうにかしてほしいわ >>55
\,を別の文字に置き換えるのがよいと思う
\がエスケープ文字に使われてるので
「\ + 任意の文字」に置き換えればいい
任意の文字はカンマ以外で他のエスケープシーケンスと被らなければ何でも良い
\cとかがわかりやすくていんじゃないかな
,でスプリットして要素を復元するときに\cを,に変換する感じ
\ → \\
, → \,
に変換されてるとするなら、こんな感じでreplaceだけで完全に復元できるはず
https://paiza.io/projects/JmNXy546I6CrIn48Z9L0kQ CSV/TSV, JSON, YAML は一般的
これらの構造物に正規表現を使うのは、おかしい。
パーサーを使うべき
各データ(要素)内に、行区切り文字・列区切り文字・クォート文字などの特殊文字がある場合は、
その要素をクォート文字で囲む必要がある >>55
修正しました
https://paiza.io/projects/JmNXy546I6CrIn48Z9L0kQ
\ → \\
, → \,
と変換されてる場合は
\\ → \ + 任意の文字
\, → \ + 任意の文字
の順番でreplaceすればOK >>62
クオートで囲むのはCSVがRFC4180に従ってる場合でしょ
エスケープするのはRFC4180の形式ではないよ
エスケープするならクオートで囲む必要はないよ
RFCのCSVは扱いにくいんだよね
テキストの行数とCSVのレコード数が一致しないしパーサも結構複雑
エスケープ方式の方があきらかにコンピュータで処理しやすい
CSVのRFCは人類の負の遺産だと思う 基本、自作したものは、バグるので使えない
CSV/TSV, JSON, YAML などは一般的だから、
たいていの言語の標準ライブラリにある
車輪の再開発はダメ。
開発・テストコストが掛かって、低品質になるから使えない 例えば、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" >>65
Javaの標準ライブラリにはないよ
ここはJavaのスレだよ
ドメイン特化な軽量フォーマットを作るのは僕はありだと思うけどなあ
他人が作ったものが高品質とも限らないし標準ライブラリがバグってることもあるよ
ケースバイケースかな >>66
それはRFCに従ってる感じっすね
RFCのCSVはテキストの行数とCSVの行数が一致しないから
grepコマンドでレコードを検索できないしwcコマンドでレコード数を調べることもできない
はなはだ使いにくいと思うんだよね、いわば前例踏襲だけで生き残ってるゴミ仕様だと思うんだよね、SMTPと同じですわ
もうええやろって思う ちなみにJavaの標準ライブラリのString.splitは末尾の空文字列を無視するから
CSVのパースに使うと列の数が変わってしまう
標準ライブラリでもクセがあるから注意
車輪の再開発はケースバイケースだよ
いびつな車輪で走り続けるよりも、よりよい車輪を作って走ったが良いこともある
車輪の再開発だからダメだ、良いのだというものではないという話 >>70
replaceするだけの処理にライブラリ使ったら負けだと思う RFCのCSVを読む場合はライブラリ使ったが良いだろうね
僕はふだんSuper CSVを使ってる
スピード重視ならuniVocityかSimpleFlatMapperかな
Super CSV、Opencsv、Apache Commons CSVは処理が遅い なんの勝ちか負けか知らんけど
CSVなんか扱ってる時点で負けてるんだから実利取っとけよw >>73
お給料はどうやろうと変わらないっしょ
実利なんてないんですよ、好きにしたらええでしょ 僕はCSVのこと好きですけどね
Oracleの100倍好き CSVなど要求してくるところは仕様にエンコーディングすら記載してない
確認するとTextファイルはShift_JISが当たり前と思ってるアホで
フィールド長要件もShift_JIS換算バイト数だったりして糞面倒くさい
俺は大嫌いだ、CSVのコードなど1秒も時間かけたくないね CSV入出力は自作しないでライブラリ使うなあ。
ていうかCSVに限らずライブラリあるならそれ使って入出力をする。
学習や趣味であえて自作する場合は別として。 >>76
多分そういうのってWindowsのExcelで読みたいんだろうね。あれCSVの拡張子にしとくとシフトJISとして読んでくれるので。TXTにしとけばウィザードになって文字コード指定も出来るけどな。 ExcelはBOM付きのUTF-8なら文字化けせずに開けるはず エンドユーザ向けの出力なら許せるが、同業者だったり...
当然そういうアホにはREST API用意しますからなどという代替案は通じるはずもなく 確かに、RFC のCSV は、
grep, wc などで、簡単には使えない
でも一般的だから、色々なアプリで読み込めるし、可搬性も高い 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なんですが,別のバージョンで試した方がいいでしょうか? 原因や対処法わかる方いましたら教えて頂きたいです. 「java.exe javaw.exe」「java.exe javac.exe」で、違いを検索すれば?
>突然コンパイルができなくなり
コンパイルは、java じゃなくて、javac じゃないの? Gradleでビルドから実行までやってるんじゃないかなと思った >>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 >>79
あー。UTF-8のBOM入りってそこで使えるのか。
あんな無駄なもん何処で使うんだろうと思ったら。 >>81
CSV用のgrepってあったらいいよな。
ライブラリ使えば簡単そうだからお題スレに出しておくかな。 たかがファイル入出力するのにライブラリ使うとかどんだけレベル低いんだよ 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する理由がよく分からないです... ↑訂正します。スーパークラスのsetter getterはaではなく(誤)、totalのsetter getterです。 >>93
エラーとしては、「不可視です」と出力されるのですが、ググると、priveta をpublicで緩和するか、setterやgetterがあるか確認してなければ作成を検討する、という方法を見つけました
スーパークラスにtotalのsetterやgetterがあるのに何故かなと思って質問させてもらっています getter/setterあるのに代入文使えないのは何故っての質問の意図か?理解するの難解すぎるw
javaには多言語にあるようなプロパティ構文はないgetter/setterといっても単なるメソッド setter/getterを単なるメソッドというと誤解あるか?
フレームワーク使ったりJ2EEな領域になるとルールになる場合もあって説明が難しい
その様式はカルチャー以上、文法未満、どうせショートカット一発自動生成 >>96
色々後出しで申し訳ないです。
そもそも代入出来ないため、一旦別領域を経由して再度変数を入れないといけない、と理解しました。
助かりました、ありがとうございます。 >>97
それは単に冗長なコーディングスタイルってだけだが switch~casaて何のために使うのでそか?
意味が分かりません
if使えばいいじゃないでそか switchの場合ラベルに飛ぶだけ
ifの場合if毎に条件判定がいる ■ このスレッドは過去ログ倉庫に格納されています