Java初心者のためのスレッドです。
※前スレ
Java入門・初心者質問スレ Part.7
http://mevius.5ch.net/test/read.cgi/tech/1515549964/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:----: EXT was configured
探検
Java入門・初心者質問スレ Part.8
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ eff7-9jZM [175.28.184.198])
2018/06/07(木) 20:17:08.87ID:N8MsK2gr0475デフォルトの名無しさん (ワッチョイ e3b3-+ow7 [219.210.104.7])
2018/09/18(火) 15:32:25.20ID:Wjwixwwi0476デフォルトの名無しさん (ワッチョイ e3b3-+ow7 [219.210.104.7])
2018/09/18(火) 15:32:42.50ID:Wjwixwwi0 import java.awt.Graphics;
import javax.swing.JFrame;
public class myClock extends JFrame implements Runnable {
static myClock cl = new myClock();
static Thread thrd = new Thread(cl);
public static void main(String[] args) {
cl.setVisible(true);
thrd.start();
}
public void run() {
while(true) {
repaint();
try {
thrd.sleep(1000);
} catch(InterruptedException e) {
}
}
}
public void paint(Graphics g) {
super.paint(g);
g.drawString("test", 80, 40);
}
myClock() {
setSize(240, 70);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
import javax.swing.JFrame;
public class myClock extends JFrame implements Runnable {
static myClock cl = new myClock();
static Thread thrd = new Thread(cl);
public static void main(String[] args) {
cl.setVisible(true);
thrd.start();
}
public void run() {
while(true) {
repaint();
try {
thrd.sleep(1000);
} catch(InterruptedException e) {
}
}
}
public void paint(Graphics g) {
super.paint(g);
g.drawString("test", 80, 40);
}
myClock() {
setSize(240, 70);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
477デフォルトの名無しさん (ワッチョイ e3b3-+ow7 [219.210.104.7])
2018/09/18(火) 15:39:30.94ID:Wjwixwwi0 ちなみにこのサイトの
http://yay.cla.kobe-u.ac.jp/~jm/edu/2008/JE3/20080121-java-gui5.html
上のほうにある 「デジタルクロック(MyDigitalClock.java)」
のコードをコピペして試してみたところ表示されない問題は起きませんでした
http://yay.cla.kobe-u.ac.jp/~jm/edu/2008/JE3/20080121-java-gui5.html
上のほうにある 「デジタルクロック(MyDigitalClock.java)」
のコードをコピペして試してみたところ表示されない問題は起きませんでした
478デフォルトの名無しさん (ワッチョイ fb9f-54aX [175.134.57.7])
2018/09/19(水) 03:29:57.76ID:ti9UWKMZ0479デフォルトの名無しさん (ワッチョイ 6b80-zsro [153.177.171.243])
2018/09/19(水) 05:05:36.27ID:/Yn8C7350 try {
thrd.sleep(1000);
} catch(InterruptedException e) {
}
例外が起こっても、catch が空文だから、例外を処理していない。
これは例外の握りつぶしと言って、やってはいけない
アプリを終了させるなど、何かエラー処理を書かないといけない
何も書かないと、エラーが起こっているのに、
アプリが存在し続ける、または動き続ける
thrd.sleep(1000);
} catch(InterruptedException e) {
}
例外が起こっても、catch が空文だから、例外を処理していない。
これは例外の握りつぶしと言って、やってはいけない
アプリを終了させるなど、何かエラー処理を書かないといけない
何も書かないと、エラーが起こっているのに、
アプリが存在し続ける、または動き続ける
480デフォルトの名無しさん (ワッチョイ e3b3-+ow7 [219.210.104.7])
2018/09/19(水) 07:32:04.78ID:9j05f62H0481デフォルトの名無しさん (ワッチョイ e3b3-+ow7 [219.210.104.7])
2018/09/19(水) 07:32:22.29ID:9j05f62H0 public class myClock extends JFrame implements Runnable {
static myClock cl = new myClock();
static Thread thrd = new Thread(cl);
public static void main(String[] args) {
cl.setVisible(true);
thrd.start();
}
public void run() {
while(true) {
repaint();
try {
thrd.sleep(1000);
} catch(InterruptedException e) {
e.printStackTrace();
}
}
}
class GPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("test", 80, 40);
}
}
myClock() {
setSize(240, 70);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(new GPanel(), BorderLayout.CENTER);
}
}
static myClock cl = new myClock();
static Thread thrd = new Thread(cl);
public static void main(String[] args) {
cl.setVisible(true);
thrd.start();
}
public void run() {
while(true) {
repaint();
try {
thrd.sleep(1000);
} catch(InterruptedException e) {
e.printStackTrace();
}
}
}
class GPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("test", 80, 40);
}
}
myClock() {
setSize(240, 70);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(new GPanel(), BorderLayout.CENTER);
}
}
482デフォルトの名無しさん (ワッチョイ e3b3-+ow7 [219.210.104.7])
2018/09/19(水) 07:48:39.26ID:9j05f62H0 GPanelクラスが中にはいっちゃってました
コンストラクタの下、外に出しておきました
コンストラクタの下、外に出しておきました
483デフォルトの名無しさん (ワッチョイ edb3-F8qc [126.224.121.48])
2018/09/19(水) 21:31:45.37ID:PT8Q1qAA0 しゅみましぇん初心者なんですが開発環境でエクリプスってのインストールしたらJDKやJREってのは不要なんですか?教えてエロい人
484デフォルトの名無しさん (アウアウウー Sa61-Jnas [106.181.143.87])
2018/09/19(水) 21:41:20.74ID:b6dng2VDa 必要
今月で無償のJDKはサポート終了するからオラクルに金払ってJDK11買ってね
今月で無償のJDKはサポート終了するからオラクルに金払ってJDK11買ってね
485デフォルトの名無しさん (ワッチョイ edb3-F8qc [126.224.121.48])
2018/09/19(水) 21:48:18.24ID:PT8Q1qAA0 ふぇ!?無料と有料両方あるんじゃないんでしゅか?
つーかエクリプスダウンロードしゅごい時間かかるんでしゅね
つーかエクリプスダウンロードしゅごい時間かかるんでしゅね
486デフォルトの名無しさん (アウアウカー Sa09-slpW [182.251.240.44])
2018/09/19(水) 21:49:12.23ID:zcXFtBV7a そういやこれまでeclipseで必要か否かに関わらず無条件にJDKインストールしてたからeclipseで必要かどうかなんて考えた事もなかったな。
487デフォルトの名無しさん (ワッチョイ cd76-unaQ [14.3.57.9])
2018/09/19(水) 22:00:54.62ID:8oznxs6p0 この前プログラミングスクールの中の人になんでいまだにエクリプスなんて使わせるのか聞いたんだけど、
単純に一線についていけなくなったロートルを講師として安く雇うから、教える側がエクリプスしか使えないらしい
単純に一線についていけなくなったロートルを講師として安く雇うから、教える側がエクリプスしか使えないらしい
488デフォルトの名無しさん (ワッチョイ 6b80-zsro [153.177.171.243])
2018/09/19(水) 22:20:31.29ID:/Yn8C7350 >>481
すべての行に、print 1, print 2 ... という感じで、print 文を入れて、
どこまで実行されているのか、確かめる
それか、デバッガーで1行ずつ実行して確かめる
まず、ここまで実行されて、ここは実行されていないという、地点を探す
すべての行に、print 1, print 2 ... という感じで、print 文を入れて、
どこまで実行されているのか、確かめる
それか、デバッガーで1行ずつ実行して確かめる
まず、ここまで実行されて、ここは実行されていないという、地点を探す
489デフォルトの名無しさん (ワッチョイ 3db3-l9zA [126.205.0.53])
2018/09/20(木) 07:09:25.66ID:0vHOtJkY0 C#ならVisualStudio1択ですけどjavaはEclipse1択では無いんですか?
490デフォルトの名無しさん (アウアウカー Sa99-rLjT [182.251.240.33])
2018/09/20(木) 09:32:23.34ID:cMPVhU9ia >>489
JetBrain の IntelliJ IDEA ってのもあるよ。
JetBrain の IntelliJ IDEA ってのもあるよ。
491デフォルトの名無しさん (スッップ Sd03-MiFZ [49.98.158.248])
2018/09/20(木) 10:57:50.23ID:9tRwSzt9d ヒープのサイズとかって、起動用のシェルスクリプトとかでコマンドラインに並べてますが、
Javaのソース中で設定できませんか
Javaソース以外に、起動用のシェルスクリプトも管理対象資材にする必要があるのを
なんとかならないかなと思ってます
Javaのソース中で設定できませんか
Javaソース以外に、起動用のシェルスクリプトも管理対象資材にする必要があるのを
なんとかならないかなと思ってます
492デフォルトの名無しさん (アウアウカー Sa99-U2Pa [182.251.253.19])
2018/09/20(木) 11:01:25.68ID:T35mVtQna >>489
Eclipseはもう色々限界でどんどんシュリンクしてる。
今はIntelliJ使う人が多いんじゃないかな。
Web開発しないなら無料版で大丈夫だし、仮に有料版買ったとしても糞みたいなプラグインの依存関係管理とかが消えるだけでも十分価値あるし。
Eclipseはもう色々限界でどんどんシュリンクしてる。
今はIntelliJ使う人が多いんじゃないかな。
Web開発しないなら無料版で大丈夫だし、仮に有料版買ったとしても糞みたいなプラグインの依存関係管理とかが消えるだけでも十分価値あるし。
493デフォルトの名無しさん (ブーイモ MMf1-vwf2 [202.214.167.42])
2018/09/20(木) 11:15:32.57ID:5eDdLMhsM Javaドカはeclipseだよ
膨大な手順書の更新とかライセンス契約とか申請とか面倒臭すぎるからな
どうせコピペ仕事しかしないくせにPGの好みなんかどうでもいい
膨大な手順書の更新とかライセンス契約とか申請とか面倒臭すぎるからな
どうせコピペ仕事しかしないくせにPGの好みなんかどうでもいい
494デフォルトの名無しさん (ブーイモ MM81-65c2 [210.138.6.195])
2018/09/20(木) 11:38:33.59ID:k0r/9zN1M >>492
どこ情報よそれ
どこ情報よそれ
495デフォルトの名無しさん (スププ Sd03-nsub [49.96.22.69])
2018/09/20(木) 15:04:27.07ID:qPy/9IGfd b = a++;
b = ++a;
の違いのような問題がbronzeでの出題頻度が高いということなんですけど、実際こういう書き方はよく使われるんでしょうか。
どうもややこしいので、もっと分かりやすく書けないものかと思うんですが
b = ++a;
の違いのような問題がbronzeでの出題頻度が高いということなんですけど、実際こういう書き方はよく使われるんでしょうか。
どうもややこしいので、もっと分かりやすく書けないものかと思うんですが
496デフォルトの名無しさん (ブーイモ MMf1-vwf2 [202.214.167.42])
2018/09/20(木) 15:34:33.29ID:5eDdLMhsM >>495
俺がレビュワーならPGかそんな糞コード書いてきやがったら書き直させる
俺がレビュワーならPGかそんな糞コード書いてきやがったら書き直させる
497デフォルトの名無しさん (アウアウカー Sa99-rLjT [182.251.240.35])
2018/09/20(木) 16:11:19.30ID:TeQNOAP0a >>495
使わない。何故ならややこしくてバグの元になるから。
使わない。何故ならややこしくてバグの元になるから。
498デフォルトの名無しさん (スププ Sd03-nsub [49.96.22.69])
2018/09/20(木) 16:34:32.97ID:qPy/9IGfd やはりそうなんですね
わざわざ条件式のなかで評価をさせたりするのも引っかけ問題的な狙いなんでしょうか…
まあ書かれてるのを読み取る訓練にはなるんでしょうかね
わざわざ条件式のなかで評価をさせたりするのも引っかけ問題的な狙いなんでしょうか…
まあ書かれてるのを読み取る訓練にはなるんでしょうかね
499デフォルトの名無しさん (アウアウカー Sa99-rLjT [182.251.240.35])
2018/09/20(木) 17:40:39.49ID:TeQNOAP0a 引っ掻けというか、使わなくても読んでわかる必要はあるからなあ。
500デフォルトの名無しさん (ワッチョイ 3be3-coYL [39.3.84.129])
2018/09/20(木) 18:24:32.51ID:QL0PNP4W0 さすがにその程度でややこしいってのは問題あると思うぞ
501デフォルトの名無しさん (アウアウカー Sa99-rLjT [182.251.240.35])
2018/09/20(木) 18:48:03.03ID:TeQNOAP0a ま、初心者には難解に見えるのだろう。
やがてわかるのだが使いたくないものになる。
やがてわかるのだが使いたくないものになる。
502デフォルトの名無しさん (ワッチョイ 5d11-xBrt [180.25.106.104])
2018/09/20(木) 20:28:03.45ID:y8qM5dc20 変数に再代入をする言語では別に普通の書き方。
503デフォルトの名無しさん (ワッチョイ ab80-tQZR [153.177.171.243])
2018/09/21(金) 00:53:31.57ID:m8DL5ZJ40 Ruby では、++, -- 演算子はない。
前置・後置で、意味が違うから、ややこしい
自己代入だけ
a += 1
a -= 1
前置・後置で、意味が違うから、ややこしい
自己代入だけ
a += 1
a -= 1
504デフォルトの名無しさん (ワッチョイ 1d76-U2Pa [14.3.57.9])
2018/09/21(金) 05:57:07.43ID:U/90uWFm0 難しいとは思わんけど、>>495みたいなコードかいてたら直せって言うな、俺も
505デフォルトの名無しさん (スッップ Sd03-MiFZ [49.98.158.45])
2018/09/21(金) 12:39:21.43ID:rhYAEPMQd for (i=0; i<10; i+=1){}
みたいに書くんかな
みたいに書くんかな
506デフォルトの名無しさん (アウアウカー Sa99-rLjT [182.251.240.50])
2018/09/21(金) 14:27:23.40ID:isbUNhMla507デフォルトの名無しさん (アウアウカー Sa99-rLjT [182.251.240.50])
2018/09/21(金) 14:28:07.34ID:isbUNhMla すまん。ここJavaスレだったね。ポインタ計算はないね。
508デフォルトの名無しさん (ワッチョイ 35e3-rhI1 [218.231.167.84])
2018/09/21(金) 16:23:14.99ID:9Uudce490509デフォルトの名無しさん
2018/09/21(金) 17:19:21.04 98....77...120...20
ある問題がわからないのですが
上の文字列のピリオドを
削除して
残った。
98 77 120 20を
それぞれ100以下かどうか調べる方法
ヒントでもいいので下さい。
m(._.)m
ある問題がわからないのですが
上の文字列のピリオドを
削除して
残った。
98 77 120 20を
それぞれ100以下かどうか調べる方法
ヒントでもいいので下さい。
m(._.)m
510デフォルトの名無しさん (ワッチョイ 7d65-coYL [222.15.235.177])
2018/09/21(金) 17:29:20.71ID:QS43/Izx0 split だな
511デフォルトの名無しさん
2018/09/21(金) 19:56:01.32 ありがとうございます
問題はまだ先がありますが
勢いで行けそうです。
問題はまだ先がありますが
勢いで行けそうです。
512デフォルトの名無しさん (ワッチョイ ab80-tQZR [153.177.171.243])
2018/09/21(金) 23:40:27.64ID:m8DL5ZJ40 98....77...120...20
まず、連続するドットを、1つのドットに変換する。
98.77.120.20
ドットで、split
まず、連続するドットを、1つのドットに変換する。
98.77.120.20
ドットで、split
513デフォルトの名無しさん (ワッチョイ bb9f-coYL [175.134.57.7])
2018/09/22(土) 03:00:12.86ID:ezjvT9yw0 Stream 使うとこんなの出来るんだよね。
https://paiza.io/projects/SColW878T96hU9szdaatFg
https://paiza.io/projects/SColW878T96hU9szdaatFg
514デフォルトの名無しさん (ワッチョイ bb9f-coYL [175.134.57.7])
2018/09/22(土) 03:13:39.53ID:ezjvT9yw0 Kotlin でも似たような感じにできる。
https://paiza.io/projects/3EAqz6-TjpyndK7O8Ly8xg
https://paiza.io/projects/3EAqz6-TjpyndK7O8Ly8xg
515デフォルトの名無しさん (ワッチョイ 35e3-rhI1 [218.231.194.156])
2018/09/22(土) 10:45:54.03ID:Mt4kWzpZ0 KotlinのString.splitは引数Stringを受け付けないのか。
Javaの方はPatternを受け付けないし。
どっちもオーバーロードで済む話だと思うのに。
無駄にメソッドの数を増やしたくないとかあるのかな。
Javaの方はPatternを受け付けないし。
どっちもオーバーロードで済む話だと思うのに。
無駄にメソッドの数を増やしたくないとかあるのかな。
516デフォルトの名無しさん (アウアウカー Sa99-pCnF [182.251.138.241])
2018/09/22(土) 16:47:30.75ID:iewBY6fOa jbossのEJBってのが全然わかりません。
517デフォルトの名無しさん (アウアウカー Sa99-pCnF [182.251.138.241])
2018/09/22(土) 16:55:17.83ID:iewBY6fOa Tomcatにちょっと毛が生えたのがEJBなんだろうな。
518デフォルトの名無しさん (アウアウカー Sa99-pCnF [182.251.138.241])
2018/09/22(土) 17:28:31.88ID:iewBY6fOa Spring FrameWorkとEJB使ったらどんなイメージなんだ?
519デフォルトの名無しさん (ワッチョイ bb9f-3QZN [175.134.57.7])
2018/09/22(土) 18:18:39.84ID:ezjvT9yw0 >>515
KotlinのString#split()は引数がStringのやつとRegexのやつがあって、ただの文字列の一致で分割したい場合はStringのやつを使い正規表現のパターンとの一致で分割したい場合はRegexの方を使う。
KotlinのString#split()は引数がStringのやつとRegexのやつがあって、ただの文字列の一致で分割したい場合はStringのやつを使い正規表現のパターンとの一致で分割したい場合はRegexの方を使う。
520デフォルトの名無しさん (ワッチョイ bb9f-3QZN [175.134.57.7])
2018/09/22(土) 18:32:14.34ID:ezjvT9yw0 Charのやつもあった。
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/split.html
しかしJavaのやつを拡張してあって引数が多いのだがデフォルト値がセットされているので呼び出し時の記述に全ての引数は必要ない。
今回上のソースで使用したRegexを受け付けるsplitももう一つlimitが引数として存在しているがデフォルトのままで良いので呼び出す所では省略している。
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/split.html
しかしJavaのやつを拡張してあって引数が多いのだがデフォルト値がセットされているので呼び出し時の記述に全ての引数は必要ない。
今回上のソースで使用したRegexを受け付けるsplitももう一つlimitが引数として存在しているがデフォルトのままで良いので呼び出す所では省略している。
521デフォルトの名無しさん (エムゾネ FF03-MiFZ [49.106.192.100])
2018/09/22(土) 19:57:13.70ID:UaEFgueIF 元ファイルをgzip形式で圧縮したファイルを、更にzipで複数個アーカイブしたファイルを扱ってます
今はzipファイルを全て展開→展開された圧縮ファイルを一つずつgzipで伸長、として処理してるのですが
扱いづらいので改良したいです
zipファイルの全ファイルの内容をbyte[][]に入れるメソッドとか、gzip+zipなアーカイブを
展開してリストにいれてくれるメソッドとか、ありませんか?
今はzipファイルを全て展開→展開された圧縮ファイルを一つずつgzipで伸長、として処理してるのですが
扱いづらいので改良したいです
zipファイルの全ファイルの内容をbyte[][]に入れるメソッドとか、gzip+zipなアーカイブを
展開してリストにいれてくれるメソッドとか、ありませんか?
522デフォルトの名無しさん (ワッチョイ e38a-pCnF [125.205.113.65])
2018/09/22(土) 20:02:32.77ID:ns5EK8b00 誰も答えいる奴いないな、下らんスレだ。
523デフォルトの名無しさん (ワッチョイ 5d80-yqSl [180.4.84.249])
2018/09/22(土) 20:04:45.28ID:PGp2AKzL0 そんなもんシェルで書いたら一瞬で終わるからな
いちいち手間かけてjavaで書く必要性がまずない
いちいち手間かけてjavaで書く必要性がまずない
524デフォルトの名無しさん (ワントンキン MMe3-IrVc [153.159.123.215])
2018/09/22(土) 20:28:28.82ID:ffP877J7M LocalDateTimeクラス使ってAPIリファレンスの読み方学んでるんだけど、5ヶ月後をint型で出すには
LocalDateTime.now();で現在月時刻を取得
.getMonth();でMonth型に変換
.plus(5).getValue();でInt型に変換
LocalDateTime.of();で代入
って手順しかないですよね?
getMonthValue() + 5では12月から1月に以降してくれなくて驚き桃の木でした。
LocalDateTime.now();で現在月時刻を取得
.getMonth();でMonth型に変換
.plus(5).getValue();でInt型に変換
LocalDateTime.of();で代入
って手順しかないですよね?
getMonthValue() + 5では12月から1月に以降してくれなくて驚き桃の木でした。
525デフォルトの名無しさん (ワッチョイ bbb6-25Xs [111.90.22.113])
2018/09/22(土) 20:42:31.51ID:J+cgHaTV0 >>524
LocalDateTime.now().plusMonths(5).getMonth().getValue()
LocalDateTime.now().plusMonths(5).getMonth().getValue()
526デフォルトの名無しさん (ワッチョイ 5d80-yqSl [180.4.84.249])
2018/09/22(土) 20:44:59.08ID:PGp2AKzL0 https://ideone.com/T6k33r
コレで普通に5か月後になる
LocalDateTime local_date_time_5 = LocalDateTime.now(ZoneId.of("Asia/Tokyo")).plusMonths(5);
コレで普通に5か月後になる
LocalDateTime local_date_time_5 = LocalDateTime.now(ZoneId.of("Asia/Tokyo")).plusMonths(5);
527デフォルトの名無しさん (ワッチョイ 4d32-IrVc [118.111.175.90])
2018/09/22(土) 21:10:45.88ID:PIBZ6Tp/0528デフォルトの名無しさん (スププ Sd03-nsub [49.96.21.86])
2018/09/24(月) 22:25:30.46ID:mjd+cxSud 参照型のキャスト変換とかのあたりめんどくさい……
頭がこんがらがる
頭がこんがらがる
529デフォルトの名無しさん
2018/09/24(月) 23:00:37.68 パイザのcランク問題で挫折しそう。
530デフォルトの名無しさん (スッップ Sd03-MiFZ [49.98.161.17])
2018/09/25(火) 17:00:11.67ID:RXd3mBE5d ZipInputStreamでzipファイルを展開した場合等、複数のファイルを扱う際のclose()の仕方についてどうするとよいか教えてください。
以下の様なソースを作ってます。zipファイルの内容物を展開していくものです。
ZipInputStream zis = null;
FileOutputStream fos = null;
try {
zis = new ZipInputStream(new FileInputStream(zipFileName)); // <-
for (ZipEntry entry = zis.getNextEntry(); entry != null; entry = zis.getNextEntry()){
extFileName = entry.getName();
fos = new FileOutputStream(extFileName); // <-
while ((len = zis.read(zbuff)) != -1){
fos.write(zbuff, 0, len);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
zis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
このようにソース中で複数のファイルへアクセスする場合、そのclose()はfinally句中でまとめてcloseする書き方でよいのでしょうか。
それとも、上記例でのfosをnewする時点でfos用のtry句を設け、fosのExceptionはそちらで処理すべきでしょうか。
fosのストリーム作成時にIOExceptionが発生したとき、finally句内のfos.close()で更に例外が発生しそうですが
それは仕方ないとすべきか、それともファイルごとにIOExceptionを処理するべきかを知りたいです。
以下の様なソースを作ってます。zipファイルの内容物を展開していくものです。
ZipInputStream zis = null;
FileOutputStream fos = null;
try {
zis = new ZipInputStream(new FileInputStream(zipFileName)); // <-
for (ZipEntry entry = zis.getNextEntry(); entry != null; entry = zis.getNextEntry()){
extFileName = entry.getName();
fos = new FileOutputStream(extFileName); // <-
while ((len = zis.read(zbuff)) != -1){
fos.write(zbuff, 0, len);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
zis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
このようにソース中で複数のファイルへアクセスする場合、そのclose()はfinally句中でまとめてcloseする書き方でよいのでしょうか。
それとも、上記例でのfosをnewする時点でfos用のtry句を設け、fosのExceptionはそちらで処理すべきでしょうか。
fosのストリーム作成時にIOExceptionが発生したとき、finally句内のfos.close()で更に例外が発生しそうですが
それは仕方ないとすべきか、それともファイルごとにIOExceptionを処理するべきかを知りたいです。
531デフォルトの名無しさん (アウアウカー Sa99-POkk [182.251.248.37])
2018/09/25(火) 17:16:21.33ID:Mw8jC0Zda 一般論だけど俺だったらファイルごとのループ内でtryブロック書くかな。
その方がエラーが起きた時の後始末(例えばエラーが起きたファイルのリストを表示するとか)がやりやすいし、
finallyの中にさらにtryを書くとコードの見通しが悪いから。
まあ要件次第ではある。
その方がエラーが起きた時の後始末(例えばエラーが起きたファイルのリストを表示するとか)がやりやすいし、
finallyの中にさらにtryを書くとコードの見通しが悪いから。
まあ要件次第ではある。
532デフォルトの名無しさん (スプッッ Sdc3-pGaP [1.75.238.122])
2018/09/25(火) 18:59:14.57ID:tj3tpCzGd 531と同意見
あと try-with-resourcesでググると幸せになれるぞ
open/close理解したいならゴメンだが
あと try-with-resourcesでググると幸せになれるぞ
open/close理解したいならゴメンだが
533デフォルトの名無しさん (スッップ Sd03-MiFZ [49.98.161.17])
2018/09/25(火) 20:01:10.13ID:RXd3mBE5d534デフォルトの名無しさん
2018/09/26(水) 18:42:57.71 すいません、初歩的な質問なんですが
自分の期待では下のコードで
ああああ
あああ
ああ
あ
となるつもりなんですが
どうして
ああああ
ああああ
ああああ
ああああ
ってなってちゃうんでしょうか?
教えて下さい。
for( int mb = 0 ; mb < 5 ; mb++){
for ( int mc = 1 ; mc < 5 ; mc++){
System.out.print("あ");
}
System.out.println("")
};
}
自分の期待では下のコードで
ああああ
あああ
ああ
あ
となるつもりなんですが
どうして
ああああ
ああああ
ああああ
ああああ
ってなってちゃうんでしょうか?
教えて下さい。
for( int mb = 0 ; mb < 5 ; mb++){
for ( int mc = 1 ; mc < 5 ; mc++){
System.out.print("あ");
}
System.out.println("")
};
}
535デフォルトの名無しさん
2018/09/26(水) 18:45:49.63 訂正です。
for( int mb = 0 ; mb < 5 ; mb++){
for ( int mc = 1 ; mc < 5 ; mc++){
System.out.print("あ");
}
System.out.println("")
}
for( int mb = 0 ; mb < 5 ; mb++){
for ( int mc = 1 ; mc < 5 ; mc++){
System.out.print("あ");
}
System.out.println("")
}
536デフォルトの名無しさん (ワッチョイ 2be9-yqSl [121.80.57.190])
2018/09/26(水) 18:51:32.43ID:749GKFIC0537デフォルトの名無しさん
2018/09/26(水) 19:03:07.25 そうか。mc++があるから
mcが1足されてると思ってましたが
毎回、mc=0になってるんですね。
ありがとうございます。
mcが1足されてると思ってましたが
毎回、mc=0になってるんですね。
ありがとうございます。
538デフォルトの名無しさん (アウアウカー Sa99-rLjT [182.251.240.1])
2018/09/26(水) 19:08:14.30ID:MrbR9bENa >>534
内側のループは毎回ループする回数が変わる必要があるよな。
最初は4回、2回目はは3回、という具合にループ回数が減っていく必要がある。
ところが今のそのプログラムだと毎回必ず4回ループになる。
これをなんとかして最初は4回、次は3回と言う具合に変化させるようにする。
もうなんとなくわかると思うが、例えば内側のループのforの条件部分を mc < 5 ではなく mc < (5 - mb) にするとできる。
他の方法でもできるが、とにかくループ回数が同じように減りさえすれば良い。
内側のループは毎回ループする回数が変わる必要があるよな。
最初は4回、2回目はは3回、という具合にループ回数が減っていく必要がある。
ところが今のそのプログラムだと毎回必ず4回ループになる。
これをなんとかして最初は4回、次は3回と言う具合に変化させるようにする。
もうなんとなくわかると思うが、例えば内側のループのforの条件部分を mc < 5 ではなく mc < (5 - mb) にするとできる。
他の方法でもできるが、とにかくループ回数が同じように減りさえすれば良い。
539デフォルトの名無しさん
2018/09/26(水) 19:10:21.86 ありがとうございます!
なんとなく見えてきました
がんばってみます!
なんとなく見えてきました
がんばってみます!
540デフォルトの名無しさん
2018/09/26(水) 19:16:18.14 うまくいきました
ありがとうございました!
センスがあったらアドバイスなくても
自分で気がつくんだろうな・・・・
ありがとうございました!
センスがあったらアドバイスなくても
自分で気がつくんだろうな・・・・
541デフォルトの名無しさん (ワッチョイ 35e3-rhI1 [218.231.167.57])
2018/09/26(水) 19:35:25.46ID:HSqf+3eD0 7以降なら、zip扱う時はnio.FileSystem使えばラク。
6以前なら、apacheからソースとってきてそれパクれば良いw
6以前なら、apacheからソースとってきてそれパクれば良いw
542デフォルトの名無しさん (スップ Sd03-MiFZ [49.97.102.5])
2018/09/26(水) 19:42:17.68ID:MMLyhqjfd ファイルの内容を読み、byte[]のListで返すメソッドcreateFListを作ったのですが、
戻ってきたリストの中身を順次見ていくと、最後にリストに入れたファイルBの内容しか表示されません。
FileInputStreamで得た結果ではなく、ただのbyte[]の配列をaddすると、期待通り順次内容を参照できてます。
ファイルの内容をListに入れる方法を教えてください。
public static void main(String[] args) {
List<byte[]> fList = new ArrayList<byte[]>();
fList = createFList();
for (Iterator<byte[]> iterator = fList.iterator(); iterator.hasNext();){
byte[] bw = iterator.next();
System.out.printf("%c%c%c\n", bw[0], bw[1], bw[2]); // /ファイルBの先頭3文字が2回表示される
}
}
private static List<byte[]> createFList(){
List<byte[]> fList = new ArrayList<byte[]>();
FileInputStream fis = null;
byte[] fbyte = new byte[1024];
try {
fis = new FileInputStream("ファイルA");
fis.read(fbyte);
fList.add(fbyte); // ファイルAの内容をリストに追加
fis.close();
fis = new FileInputStream("ファイルB");
fis.read(fbyte);
fList.add(fbyte); // ファイルBの内容をリストに追加
fis.close();
} catch (Exception e){
e.printStackTrace();
}
return fList;
}
戻ってきたリストの中身を順次見ていくと、最後にリストに入れたファイルBの内容しか表示されません。
FileInputStreamで得た結果ではなく、ただのbyte[]の配列をaddすると、期待通り順次内容を参照できてます。
ファイルの内容をListに入れる方法を教えてください。
public static void main(String[] args) {
List<byte[]> fList = new ArrayList<byte[]>();
fList = createFList();
for (Iterator<byte[]> iterator = fList.iterator(); iterator.hasNext();){
byte[] bw = iterator.next();
System.out.printf("%c%c%c\n", bw[0], bw[1], bw[2]); // /ファイルBの先頭3文字が2回表示される
}
}
private static List<byte[]> createFList(){
List<byte[]> fList = new ArrayList<byte[]>();
FileInputStream fis = null;
byte[] fbyte = new byte[1024];
try {
fis = new FileInputStream("ファイルA");
fis.read(fbyte);
fList.add(fbyte); // ファイルAの内容をリストに追加
fis.close();
fis = new FileInputStream("ファイルB");
fis.read(fbyte);
fList.add(fbyte); // ファイルBの内容をリストに追加
fis.close();
} catch (Exception e){
e.printStackTrace();
}
return fList;
}
543デフォルトの名無しさん (アウアウウー Sa31-vwf2 [106.181.136.96])
2018/09/26(水) 19:46:59.75ID:zkJaWWrba 全部間違ってる
悪いけどモノ作るレベルじゃないからまずはもうちょっと我慢して入門書を読み進めなさい
悪いけどモノ作るレベルじゃないからまずはもうちょっと我慢して入門書を読み進めなさい
544デフォルトの名無しさん (アウアウカー Sa99-rLjT [182.251.240.1])
2018/09/26(水) 20:52:07.36ID:MrbR9bENa >>542
fbyte は同じやつ使い回してるからだよ。ファイルごとにnewして作らないと同じ所に上書きされてしまうのでダメ。
それとmain()の最初の new ArrayList<byte[]>() は無駄だ。なぜならその直後に fList = createFList() をしていて元の fList への参照は捨てられてしまうからだ。
fbyte は同じやつ使い回してるからだよ。ファイルごとにnewして作らないと同じ所に上書きされてしまうのでダメ。
それとmain()の最初の new ArrayList<byte[]>() は無駄だ。なぜならその直後に fList = createFList() をしていて元の fList への参照は捨てられてしまうからだ。
545デフォルトの名無しさん (ワントンキン MM53-A258 [153.236.163.146])
2018/09/28(金) 14:58:57.32ID:61hLEuChM List Map覚えたての雑魚です
"あ"〜"お"、"か"〜"こ"...を追加した別々のArrayList
"あ行"〜"ん行"を追加したArrayList
を作る
HashMapで関連付ける
あ行キーを指定したら"あ"〜"お"が取得される、というプログラム組もうとしたんだけど、
List<String> aiueo = new ArrayList<>();
List<String> kaiueo = new ArrayList<>();
List<String> lineA_N = new ArrayList<>();
Map<List, List> map = new HashMap<>();
aiueo.add("あ"); ... aiueo.add("お");
kaiueo.add("か"); ... kaiueo.add("こ");
lineA_N.add("あ行"); ... lineA_N.add ("ん行");
map.put(lineA_N.subList(0, 1), aiueo);
map.put(lineA_N.subList(1, 2), kaiueo);
のようにsubList(i, i)を使って関連付ける以外の方法が浮かばなかったのですが、もっと綺麗な方法があったりしますか?
"あ"〜"お"、"か"〜"こ"...を追加した別々のArrayList
"あ行"〜"ん行"を追加したArrayList
を作る
HashMapで関連付ける
あ行キーを指定したら"あ"〜"お"が取得される、というプログラム組もうとしたんだけど、
List<String> aiueo = new ArrayList<>();
List<String> kaiueo = new ArrayList<>();
List<String> lineA_N = new ArrayList<>();
Map<List, List> map = new HashMap<>();
aiueo.add("あ"); ... aiueo.add("お");
kaiueo.add("か"); ... kaiueo.add("こ");
lineA_N.add("あ行"); ... lineA_N.add ("ん行");
map.put(lineA_N.subList(0, 1), aiueo);
map.put(lineA_N.subList(1, 2), kaiueo);
のようにsubList(i, i)を使って関連付ける以外の方法が浮かばなかったのですが、もっと綺麗な方法があったりしますか?
546デフォルトの名無しさん (ワッチョイ 1bb6-nDc3 [111.90.8.144])
2018/09/28(金) 16:19:23.91ID:z3tO4nEA0547デフォルトの名無しさん (ワッチョイ 1bb6-nDc3 [111.90.8.144])
2018/09/28(金) 16:50:58.08ID:z3tO4nEA0548デフォルトの名無しさん (ワッチョイ 1bb6-nDc3 [111.90.8.144])
2018/09/28(金) 17:16:37.68ID:z3tO4nEA0549デフォルトの名無しさん (ワッチョイ e97c-Rctb [112.136.82.59])
2018/09/28(金) 17:24:29.50ID:JZTmLHqA0 コピるより、別変数にするか再初期化する方がええやろ。
550デフォルトの名無しさん (ワッチョイ e97c-Rctb [112.136.82.59])
2018/09/28(金) 17:36:33.22ID:JZTmLHqA0 ごめん。勘違いしてた。
551デフォルトの名無しさん (ワッチョイ 1b9f-aemA [175.134.57.7])
2018/09/29(土) 05:43:52.29ID:q2F+AH0R0552デフォルトの名無しさん (ワントンキン MM53-A258 [153.236.163.146])
2018/09/29(土) 08:09:09.74ID:uDDRPkb/M553デフォルトの名無しさん (ワッチョイ 0b9f-UDzU [113.153.104.20 [上級国民]])
2018/09/29(土) 11:08:11.08ID:UEYQCClq0 おしえて下さい
String line ="1 2 3 4 g10 6 7";
String[] list = line.split(" |g10");
スペースとg10でlineを分割して配列に入れて
1 2 3 4 6 7
にしたいのですが
1 2 3 4 6 7
みたいに
4と6の間に空白の要素が入ってしまいます。
どうすれば
1 2 3 4 6 7
に出来るか教えて下さい。
String line ="1 2 3 4 g10 6 7";
String[] list = line.split(" |g10");
スペースとg10でlineを分割して配列に入れて
1 2 3 4 6 7
にしたいのですが
1 2 3 4 6 7
みたいに
4と6の間に空白の要素が入ってしまいます。
どうすれば
1 2 3 4 6 7
に出来るか教えて下さい。
554デフォルトの名無しさん
2018/09/29(土) 11:10:01.56 すいません訂正です
String line ="1 2 3 4 g10 6 7";
String[] list = line.split(" |g10");
スペースとg10でlineを分割して配列に入れて
1 2 3 4 6 7
にしたいのですが
1 2 3 4 空白要素 6 7
みたいに
4と6の間に空白の要素が入ってしまいます。
どうすれば
1 2 3 4 6 7
に出来るか教えて下さい。
String line ="1 2 3 4 g10 6 7";
String[] list = line.split(" |g10");
スペースとg10でlineを分割して配列に入れて
1 2 3 4 6 7
にしたいのですが
1 2 3 4 空白要素 6 7
みたいに
4と6の間に空白の要素が入ってしまいます。
どうすれば
1 2 3 4 6 7
に出来るか教えて下さい。
555デフォルトの名無しさん (ワッチョイ 1bb6-nDc3 [111.90.2.101])
2018/09/29(土) 11:24:17.71ID:JVLIweBX0 >>552
マップのキーは不変にするのがセオリーだよ
マップに存在するキーを変えちゃうとハッシュ値とかイコールの結果が
変わっちゃうからマップの動作は保証されないっす
キーをコレクションにする必要があるケースってどんなケース?
マップのキーは不変にするのがセオリーだよ
マップに存在するキーを変えちゃうとハッシュ値とかイコールの結果が
変わっちゃうからマップの動作は保証されないっす
キーをコレクションにする必要があるケースってどんなケース?
556デフォルトの名無しさん (ワッチョイ 1bb6-nDc3 [111.90.2.101])
2018/09/29(土) 11:32:34.91ID:JVLIweBX0557デフォルトの名無しさん
2018/09/29(土) 11:36:49.65558デフォルトの名無しさん (ワントンキン MM53-A258 [153.236.163.146])
2018/09/29(土) 16:05:20.80ID:uDDRPkb/M559デフォルトの名無しさん (ワッチョイ 1bb6-nDc3 [111.90.2.101])
2018/09/29(土) 17:00:45.25ID:JVLIweBX0 >>558
パッケージとクラスは
1つのパッケージに複数のクラスが存在するっって
関係だからキーをリストにしたい理由がよくわからない
こういうキーのリストが欲しいわけじゃなく?
https://paiza.io/projects/XAUg69Mv_3KueQ9s626nQA?language=java
パッケージとクラスは
1つのパッケージに複数のクラスが存在するっって
関係だからキーをリストにしたい理由がよくわからない
こういうキーのリストが欲しいわけじゃなく?
https://paiza.io/projects/XAUg69Mv_3KueQ9s626nQA?language=java
560デフォルトの名無しさん (ワントンキン MM53-A258 [153.236.163.146])
2018/09/29(土) 23:05:55.82ID:uDDRPkb/M >>559
パッケージをListにする必要はないと思いますが、
パッケージjava.utilとクラス一覧
クラスjava.util.Dateとメソッド一覧
…書いてたら確かにキーはListにする必要なかった。
ありがとうございます。
パッケージをListにする必要はないと思いますが、
パッケージjava.utilとクラス一覧
クラスjava.util.Dateとメソッド一覧
…書いてたら確かにキーはListにする必要なかった。
ありがとうございます。
561デフォルトの名無しさん (ワッチョイ 1b9f-aemA [175.134.57.7])
2018/09/30(日) 00:37:07.97ID:KPqVv5wd0 >>554
こんなのでもできる。これの場合は空白は1文字以上なら何文字でも良い。
String[] list = line.split("\\s+(g10\\s+)?");
ま、正規表現のパターンをどうするかの問題だな。
こんなのでもできる。これの場合は空白は1文字以上なら何文字でも良い。
String[] list = line.split("\\s+(g10\\s+)?");
ま、正規表現のパターンをどうするかの問題だな。
562デフォルトの名無しさん (スフッ Sd33-+4yX [49.104.29.165 [上級国民]])
2018/09/30(日) 21:24:58.06ID:OqFePz/nd わかんねー。
難しい
難しい
563デフォルトの名無しさん (ワントンキン MM53-A258 [153.236.163.146])
2018/10/01(月) 11:44:20.66ID:HXCGmwtoM すっきりシリーズ実践編7章の練習問題なのですが、突然showMemory();というのが出てきて入力してもエラーになります。
ググっても出てこないのですが、これはいったいなんですか?
ググっても出てこないのですが、これはいったいなんですか?
564デフォルトの名無しさん (ブーイモ MMeb-XcJu [163.49.203.127])
2018/10/01(月) 13:41:26.81ID:uzbdAfRPM565デフォルトの名無しさん (ワッチョイ 91f7-Qr5L [124.159.21.205])
2018/10/01(月) 17:20:14.70ID:0G+l/MVn0 >>563
著者か出版社にメールしろ
著者か出版社にメールしろ
566デフォルトの名無しさん (アウアウカー Saed-Ir0M [182.251.117.71])
2018/10/02(火) 18:03:42.82ID:hoDCY76ca >>563
なんですかと言われてもその本のどこかに書いてあると思う
なんですかと言われてもその本のどこかに書いてあると思う
567デフォルトの名無しさん (ワッチョイ eb80-LozN [153.177.171.243])
2018/10/03(水) 11:00:45.93ID:gJy1D1hJ0 >>521
Linux でのやり方
zip形式の、archive ファイルを解凍する
unzip archive.zip
gunzipコマンドは、gzip形式とcompress形式の、圧縮ファイルを解凍する。
-r で、そのディレクトリ内の、すべての圧縮ファイルを解凍する
gunzip -r ディレクトリ名
Linux でのやり方
zip形式の、archive ファイルを解凍する
unzip archive.zip
gunzipコマンドは、gzip形式とcompress形式の、圧縮ファイルを解凍する。
-r で、そのディレクトリ内の、すべての圧縮ファイルを解凍する
gunzip -r ディレクトリ名
568デフォルトの名無しさん (ワッチョイ eb80-LozN [153.177.171.243])
2018/10/03(水) 11:57:09.38ID:gJy1D1hJ0569デフォルトの名無しさん (スフッ Sd33-+4yX [49.104.11.196 [上級国民]])
2018/10/03(水) 14:57:43.46ID:9+VVYKLPd 難しい
570デフォルトの名無しさん (バッミングク MM3d-vLqZ [180.7.99.61])
2018/10/03(水) 15:53:09.08ID:daSHmcx9M クラス分割せず変数に代入してってやつしかできない
複数クラスに分けて引数渡してってやつのやり方がわからないよママン
引数がない場合は◯◯を表示するプログラムを作りなさいとかいう練習問題を出されてるんですが
意味がよくわかりません
引数なかったらコンパイルできないじゃないですか
複数クラスに分けて引数渡してってやつのやり方がわからないよママン
引数がない場合は◯◯を表示するプログラムを作りなさいとかいう練習問題を出されてるんですが
意味がよくわかりません
引数なかったらコンパイルできないじゃないですか
571デフォルトの名無しさん (バッミングク MM3d-vLqZ [180.7.99.61])
2018/10/03(水) 16:00:58.28ID:daSHmcx9M よくわかんないけどsetうんたらとかgetうんたらを使えばいいの?
572デフォルトの名無しさん (ブーイモ MMeb-bWPC [163.49.208.6])
2018/10/03(水) 16:05:11.87ID:K7uCuHqGM >>570
何言ってるのかわかんないから問題全文転載して
何言ってるのかわかんないから問題全文転載して
573デフォルトの名無しさん (バッミングク MM3d-vLqZ [180.7.99.61])
2018/10/03(水) 16:16:07.98ID:daSHmcx9M ◯◯日後の日付と曜日を表示しましょう
引数に◯◯日後の◯◯を設定その日付y/M/dと曜日を表示
100日後なら100を受け渡し?
引数がない場合はシステム日付を出してくださいっての
俺もよくわかってない
int型の変数Xに100を代入して
100日後は2019/01/11/金です
と表示するだけなら
みたいなやり方でクラスが1個しかないようなプログラムなら本を参照してやっとこさ
できたんだけど
引数のことが全然わからないので困ってます
引数に◯◯日後の◯◯を設定その日付y/M/dと曜日を表示
100日後なら100を受け渡し?
引数がない場合はシステム日付を出してくださいっての
俺もよくわかってない
int型の変数Xに100を代入して
100日後は2019/01/11/金です
と表示するだけなら
みたいなやり方でクラスが1個しかないようなプログラムなら本を参照してやっとこさ
できたんだけど
引数のことが全然わからないので困ってます
574デフォルトの名無しさん (スフッ Sd33-+4yX [49.104.11.196 [上級国民]])
2018/10/03(水) 16:21:17.36ID:9+VVYKLPd■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
- ヨッシー、ヘイホー、テレサ ←こいつらwwwwwwwww
- さかまた「過呼吸になった」かなた「耳聞こえない」ござる「声出ない」まつり「ご飯食べれない」
- くそしてかがやけ
- 【画像】カリカリ女、脱いだらすごい😨 [632966346]
