X



Java入門・初心者質問スレ Part.4 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
002420
垢版 |
2017/07/01(土) 21:08:56.37ID:lLi0bV67
何度もすみません。
こっちも同じ例外で落ちます。
なぜでしょうか?
public class GuessNumber {
____public static void main(String[] args) {
________System.out.println("【数あてゲーム】");
________java.util.Random rnd = new java.util.Random();
________int ans = rnd.nextInt(10);
________for(int i = 0; i < 5; i++) {
____________System.out.print("0〜9の数字を入力してください");
____________java.util.Scanner sc = new java.util.Scanner(System.in);
____________int num = sc.nextInt();
____________if(num == ans) {
________________System.out.println("アタリ!");
________________break;
____________} else {
________________System.out.println("違います。");
____________}
____________sc.close();
________}
________System.out.println("ゲームを終了します");
____}
}
002520
垢版 |
2017/07/01(土) 21:10:26.90ID:lLi0bV67
Java初日の初心者です。
0027デフォルトの名無しさん
垢版 |
2017/07/01(土) 21:28:39.22ID:lLi0bV67
>>26
ありがとうございます。確かにsc.close()をコメントアウトすると落ちません。
C++のnewとdeleteと同じようなものではないのですね。
難しいです・・・
0028デフォルトの名無しさん
垢版 |
2017/07/01(土) 21:41:21.41ID:alsfhIt3
>>27
JavaではGCが勝手にメモリの整理してるから消さなくてもメモリは圧迫しない、けど入出力ストリームは勝手に閉じたりしないから使わなくなったら閉じないといけない
もし閉じるとしたらループの外やな
0029デフォルトの名無しさん
垢版 |
2017/07/01(土) 21:46:02.26ID:lLi0bV67
>>28
ありがとうございます。
java.util.Scanner sc = new java.util.Scanner(System.in);

sc.close()をループの外に出しました。
ガーベッジコレクション、今読んでいる本に出てきました。
0030デフォルトの名無しさん
垢版 |
2017/07/02(日) 07:45:48.42ID:EUXzW2jq
>>11
どう違うか明示できない時点でお前はこのスレでは初心者にも劣る生き物
このスレを見る資格すらない
0031デフォルトの名無しさん
垢版 |
2017/07/02(日) 09:35:31.87ID:id+DUBbF
>>19
[公開 API を使用して非公開な型をエクスポート]
っていう警告です
文法的に問題ないようだったらこのまま使おうとおもいます
0032デフォルトの名無しさん
垢版 |
2017/07/02(日) 10:17:30.58ID:iWpJKrQI
>>31
何が非公開になってるの?
ソース出してよ。
0033デフォルトの名無しさん
垢版 |
2017/07/02(日) 12:04:10.63ID:98t5/5H2
>>18
パッケージとアクセス修飾子も書いて
警告消すのにほんとにabstract消しただけ?abstract消して代わりにpublicにしたりしてんじゃないの?
0035デフォルトの名無しさん
垢版 |
2017/07/02(日) 20:23:31.52ID:75F+/mNi
画像回転させるときにどっちの方法使いますか?
理由も教えてください

---A---
affin.setToRotation(45 * Math.PI/180, 90d, 40d);
g2.setTransform(affin);
g2.drawImage(img, x, y, w, h, p);

---B---
affin.translate(x - w / 2, y - h / 2);
affin.rotate(Math.toRadians(-1.0 * angle), w / 2, h / 2);
g2.drawImage(image, affin, p);
0036デフォルトの名無しさん
垢版 |
2017/07/02(日) 23:34:59.11ID:ynDhLM7Z
3Dの基本だけど、回転・移動・拡大縮小には順番がある

回転・拡大縮小には、中心・基準点があるけど、移動にはない。
だから、中心がずれるかどうかを考える

サンプルを作って、順番を変えて、やってみればすぐわかる
0037デフォルトの名無しさん
垢版 |
2017/07/03(月) 20:53:46.38ID:IK55Tf5G
パネル上で二つの画像を合成してそれぞれの色の濃いところを取りたいのですが可能でしょうか?
0038デフォルトの名無しさん
垢版 |
2017/07/03(月) 23:17:10.77ID:ZCcMo8Ox
JavaFXの勉強始めたのですが
FXMLについて詳しく書かれた資料がかなり少ないのですが、なぜなのでしょうか?
0039デフォルトの名無しさん
垢版 |
2017/07/03(月) 23:27:51.37ID:/YkvVirN
>>37
たいていの言語で出来るから、たぶん可能
0044デフォルトの名無しさん
垢版 |
2017/07/07(金) 00:52:21.45ID:SDWyglyj
リスナーで処理Aを待機してBを実行、という仕様をforループ内で使用したいです
************************************
hoge.~~.addListener( {
if(Aの実行完了を確認){
Bの実行
});
Aの実行
************************************
雑ですがこのようなもので、単体では思い通りに動きます
ですが処理Aの所要時間が長く、ループにするとAが完了する前にループが回りきってしまい
1つのAが動作を終えると全てのリスナーがその1つの結果に対して動き出してしまいます
理想としてはA,B,A,B,… のようにそれぞれ交互に処理されることです
どなたか良い方法をお持ちではないでしょうか
0045デフォルトの名無しさん
垢版 |
2017/07/07(金) 02:59:13.53ID:TVy5GKT4
>>44
どこがループになっているのか?
0046デフォルトの名無しさん
垢版 |
2017/07/07(金) 03:28:46.21ID:HRVWihAA
for ループは同期処理で、
EventListener は、コールバック・非同期処理だろ

コールバックは、後で呼ばれる

同期・非同期処理で検索!
0047デフォルトの名無しさん
垢版 |
2017/07/07(金) 07:29:22.86ID:ez3vLCaW
>>44
何がやりたいのか全くわからん
A -> Bが1セットならその組みでイベントしかけりゃえーやん
0048デフォルトの名無しさん
垢版 |
2017/07/07(金) 18:45:46.52ID:JqkT4Ef+
Listインターフェースのadd系ってなんでadd(int, E)だけ戻り値がvoidなんだろ

ArrayListを拡張して要素数の上限値付きリストを作って
上限越えてaddしようとした時falseを返すようにしようとしたのに
ひとつだけ挙動が違ってしまう……
0052デフォルトの名無しさん
垢版 |
2017/07/08(土) 00:07:49.76ID:UEoozzz2
そういや Java 8 で interface に default メソッド作れるようになったのに default コンストラクタが作れないのは何故か?
0053デフォルトの名無しさん
垢版 |
2017/07/08(土) 00:59:40.73ID:toOimg9I
class Cat implements Animal{
static string jpname = "ねこ";
int size;
private int sex;
:
:
}

class Dog implements Animal{…}

こんな感じのクラスがあったとして
Animal anml = new Cat();
anml = new Dog();

としたらメモリリークは発生するのでしょうか?
以前staticを使うとメモリリークが発生するという記事を見た気がするので気になりました
0054デフォルトの名無しさん
垢版 |
2017/07/08(土) 01:23:56.74ID:UEoozzz2
>>53
どっからどう漏れるんだ?
てか、その記事何について書いてあったの?JavaVMのバグ?
0055デフォルトの名無しさん
垢版 |
2017/07/08(土) 01:31:23.02ID:toOimg9I
>>54
sizeやsexに格納した値が参照が外れたにも関わらずメモリに残り続けるという意味だと思います
あまり覚えてないのですが、staticのデメリットとしてメモリリークが発生すると言ってる記事でした
0056デフォルトの名無しさん
垢版 |
2017/07/08(土) 02:34:59.50ID:eRvDPK8O
>>45-47
意味不明な質問にかまっていただきありがとうございます
たしかに同期非同期について全くわかっていませんでした
別の実装を考えてみます
失礼しました
0057デフォルトの名無しさん
垢版 |
2017/07/08(土) 03:28:53.05ID:UEoozzz2
>>55
どこからも参照されなくなればgcの対象になってその内解放される筈だが?
その例の場合そもそも size や sex はプリミティブ型だから Cat や Dog クラスのインスタンスが
どこからも参照されなくなれば同時に開放される。jpname は static だから開放はされないが
new してインスタンス作っても増えることはない(staticだから)。

しかし Java では C/C++ でいうようなメモリリークは起きようがないぞ。プログラマがうっかり
いつまでもクラスのインスタンスを参照し続けるように書いてしまった場合だけそうなる。
だからだいたいはプログラムがおかしいだけ(盲点はあるけどな)。それとライブラリの内部の
書き方が悪くてプログラマが意識せずして参照を残存させてしまうことはありうる。

・書き方が悪くて残存させてしまうような例(しかしJavaのことをよく知っていれば防げそうなバグ)
http://networkprogramming.blog18.fc2.com/blog-entry%2d74.html

・ライブラリの問題で残存させてしまう例(但しこれはJ2SE 5.0で解消)
http://www.aerith.net/java/thread-memory-leak-j.html
0058デフォルトの名無しさん
垢版 |
2017/07/08(土) 20:18:41.38ID:fIuXTSpk
JavaScript のメモリリークでは、

クロージャ内の変数とか、
タイマーを解放しなかったとか、
製品版で、console.log を使っているとか、

イベントハンドラーを付けた要素の、先祖の要素が削除された際、
その子孫のイベントハンドラーが削除されないとか
0059デフォルトの名無しさん
垢版 |
2017/07/09(日) 10:33:32.67ID:pYRJnPGA
NetBeansでSwing JFrameを追加すると以下のコードがmain()に挿入されるのですが
  java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
      new NewJFrame().setVisible(true);
メインスレッドの方でこのインスタンスを参照したいときにはどの様に書くべきなのでしょうか?
0060デフォルトの名無しさん
垢版 |
2017/07/10(月) 13:32:21.57ID:FVtmmblZ
>>59
メインメソッドでBlockingQueueを用意して
invokeLaterでJFrameのインスタンスをputして
メインメソッドでtakeすればいいよ
0065デフォルトの名無しさん
垢版 |
2017/07/13(木) 20:55:51.43ID:5vi+11fj
参照型とオブジェクト型の違いがよく分かりません
同じものだと思っていたので混乱しています

Super sp = new Sub();

とした場合、左辺が参照型で右辺がオブジェクト型でしょうか?
オブジェクト型も参照型ですよね
0066デフォルトの名無しさん
垢版 |
2017/07/13(木) 21:02:07.12ID:KJRBO+E3
参照型は変数の種類、intみたいなデータがそのまま入ってる変数(プリミティブ)と比較してって感じ
オブジェクト型は参照型の変数に実際に入ってる物
こんな感じかな
0067デフォルトの名無しさん
垢版 |
2017/07/13(木) 21:36:04.40ID:Wc3T27x1
The Java Language Specification
http://docs.oracle.com/javase/specs/jls/se7/html/index.html

| 参照型は、クラス型、インタフェース型、型変数、配列型の4種類です。
| オブジェクトは、クラスインスタンスまたは配列です。
| オブジェクトクラスは、すべてのクラスのスーパークラスです。

言語仕様にはオブジェクト型という用語が出てこないので
オブジェクト型は文脈によるんじゃないかな

オブジェクト型は
・参照型のことかもしれない
・Objectクラスのことかもしれない
・クラス型と配列型のことかもしれない
いずれにしても参照型の部分集合

AがBの部分集合であるとき
AはBと表現するならば
オブジェクト型は参照型

はい論破
0069デフォルトの名無しさん
垢版 |
2017/07/13(木) 23:16:20.85ID:vy/8QKML
てか、そもそも議論していない。
0070デフォルトの名無しさん
垢版 |
2017/07/14(金) 00:32:36.19ID:jwaA4OPc
型には、primitive と、参照型(オブジェクト)の2つがある

primitive には、参照は無く、値しか存在しない。
代入・コピーでも、値そのものが、代入・コピーされる。
参照を考えなくてよいから、わかりやすい

一方、オブジェクトの代入・コピーでは、参照だけが代入・コピーされる。
Shallow Copy

新しいオブジェクトを作っていないから、1つのオブジェクトしか存在せず、
2つの参照が、同一オブジェクトを指すから、ややこしい

新しいオブジェクトを作りながら、代入・コピーする事を、Deep Copy と言う。
Deep Copy では、オブジェクト内に、オブジェクトを含む場合、
ドンドン、中まで再帰的に、Deep Copy をしていく

最終的に、primitive に突き当たると、参照ではないので、値が代入・コピーされる。
Deep Copy の最終地点が、primitive
0071デフォルトの名無しさん
垢版 |
2017/07/15(土) 01:50:54.44ID:Pwuq6t85
ループ処理でもなんでもないところで、Listの0番目を取得して処理するのって、あまりよくないですよね?
人のコードでよく見るので気になってます
0072デフォルトの名無しさん
垢版 |
2017/07/15(土) 01:53:24.65ID:g8mCRq5Q
>>71
何を気にしてるのかがよくわからんがListの0番目のデータが必要であればアクセスするし問題はない
0073デフォルトの名無しさん
垢版 |
2017/07/15(土) 04:12:48.28ID:ejj256V/
>>71
何がよくないの?どうしてあなたがそれをよくないと思うようになったのかが謎だよ。なんで?
0074デフォルトの名無しさん
垢版 |
2017/07/15(土) 09:12:58.58ID:Pwuq6t85
すみません。言葉足らずでした。
気にしていたのはマジックナンバーの使用です。

1. Listそのものを作成する段階で、その事前に取得していた0番目の要素は別の情報で保持しておく
2. 判断が必要な段階で、その保持した情報のみを参照して処理を行う
こうすると、あらかじめ保持しておく分の処理は増えますが、0というマジックナンバーを使うことがなくなります。
0075デフォルトの名無しさん
垢版 |
2017/07/15(土) 09:44:34.17ID:3ihmavXl
>>74
マジックナンバーってww

むしろお前のその冗長な案こそ、あとから見た人にとってはなんの意図があってこんなことしてるのかわからないだろうから、
ちゃんとコメントで言い訳しとけよw
0076デフォルトの名無しさん
垢版 |
2017/07/15(土) 10:28:01.22ID:Pwuq6t85
>>75
マジックナンバーを使うと、理由に関係無く上司が顔を真っ赤にして怒るので忌避しています。

自案は、要素内の情報で適宜判断するのではなく、予め情報を専用の領域に確保することでパラメータの抽象化をしたかったのです。
どちらの形でも動作は変わらないので、正直どっちでもいいのかなとは思いますが、保守性を考えると0番目取得はそうしている理由が見えづらいのでナシなのかなと考えていました。
0078デフォルトの名無しさん
垢版 |
2017/07/15(土) 11:07:20.84ID:zmwkueqb
たとえばListの0番目に名前が入っていて1番目に住所が入っています
みたいな仕様だとインデックス直書きでアクセスするのはよろしくないかもね

最初の要素を取得するってだけなら0で良いと思う

最初の要素を取得するためのインタフェースとしては
・Stream.findFirst()
・Queue.element()
があるのでケースバイケースで
0079デフォルトの名無しさん
垢版 |
2017/07/15(土) 11:18:17.37ID:vvIOQCOR
まあデータ構造決まってるなら構造体みたいなクラスを定義するのが一番分かりやすくはあると思うけどね
0080デフォルトの名無しさん
垢版 |
2017/07/15(土) 12:35:01.54ID:ejj256V/
hash突っ込んどけば名前で扱えるからましになるのでは?
名前変わったら終わりだけどな。
0081デフォルトの名無しさん
垢版 |
2017/07/15(土) 12:36:01.21ID:ejj256V/
「に」が抜けた。「hashに」だ。
0082デフォルトの名無しさん
垢版 |
2017/07/15(土) 15:53:59.30ID:aAFD2FSQ
すいません
スッキリわかるJAVA入門でいきなりつまづきました
system.out.println(““)この中に文字を入れて文章を表示させたんですが
「次は二桁を書き足して表示させよう」となってるんですが、一桁目のsystem.out.println(““)をコピーして
改行後下に貼り付けてコンパイルしてもエラーになってしまいます
やり方が違うんでしょうがどうしたらいいかわかりません、すいません、教えてください。
0084デフォルトの名無しさん
垢版 |
2017/07/15(土) 15:58:22.33ID:qtlS5nEU
>>82
ソースコードと小一時間にらめっこして分からなかったらideoneでもpastebinでもいいからここに貼れ、話はそれからだ
というのはさておきセミコロンまでコピペした?
0088デフォルトの名無しさん
垢版 |
2017/07/15(土) 16:16:04.41ID:qtlS5nEU
>>87
エラー文の\12288を16進に直すと3000、これはUnicodeで全角スペースを表す
どこかに全角スペースが混ざってるから取り除くとおk

俺もやったなーこれw
解決に1時間くらいかかった
0092デフォルトの名無しさん
垢版 |
2017/07/15(土) 16:19:10.83ID:aAFD2FSQ
>>90
ありがとうございます

ちなみにエラー番号からエラー内容を調べる事は出来るのでしょうか?
0093デフォルトの名無しさん
垢版 |
2017/07/15(土) 16:21:09.13ID:qtlS5nEU
エラーの内容がそのまま書いてあるだけだよ、慣れればすぐに読めるようになる
0095デフォルトの名無しさん
垢版 |
2017/07/15(土) 16:47:37.67ID:ISc0zg3F
入門書を一通りやり終えた後の次はどんなことに手を出せばいいのかわからない
今はとりあえずAPI仕様を読んだりオブジェクト指向関連の書籍でお茶を濁している最中
ステップアップのフローチャートが頭に浮かばない
デザインパターンやフレームワークもやりたいけど、多分今の実力じゃ手に余るし
0096デフォルトの名無しさん
垢版 |
2017/07/15(土) 17:10:30.36ID:rsSZ04ms
>>95
何か作りたいもんがあるからJavaやってんじゃないのか。
作ってるうちに足りないもんが見えてくるから
それをやればいい。
0097デフォルトの名無しさん
垢版 |
2017/07/15(土) 17:22:44.63ID:T1g1+yar
まぁみんながみんな作りたいものがあるわけでもないよね
特に初心者なんて何が出来るかもよくわからんわけだし
0098デフォルトの名無しさん
垢版 |
2017/07/15(土) 17:48:43.67ID:qtlS5nEU
何かが作りたくて始めたわけじゃないのか…
俺は最初から作りたいものありきだったからよくわからん
0099デフォルトの名無しさん
垢版 |
2017/07/15(土) 17:54:10.13ID:ISc0zg3F
>>96
当初はAndroidアプリで音楽プレーヤーを製作したかった
でもアプリ開発入門書を読んでもコードを叩いてもちんぷんかんぷんだったからjava自体を学習し始めた
現状、デスクトップアプリとして着手しようと目標変更
そこでオブジェクト指向の理解深化やjavafxに触れたり、
OSSのソースコードを見てみたりするも絶賛五里霧中で

プログラミングに体系化された学習方法や方針があると思い込んでいる節が頭の中にあった
それがそもそもの間違いなのか
0100デフォルトの名無しさん
垢版 |
2017/07/15(土) 17:57:38.55ID:ejj256V/
何作ったらいいかわからない?
それでは俺のためにエロゲでも作ってくれたまえ。
0101デフォルトの名無しさん
垢版 |
2017/07/15(土) 18:02:19.45ID:qtlS5nEU
>>99
体系化されたものなんてほとんどないけどアルゴリズムの知識やらプログラムの組み立て方はどこに行っても役に立つから学んでおくといいかな
Aizu Online Judgeの簡単な問題でも解いてみたらどうだろう、人のコード見れるから参考にもなるし
0102デフォルトの名無しさん
垢版 |
2017/07/15(土) 18:41:44.49ID:ISc0zg3F
>>101
OnlineJudge初めて知った、やってみる


更なる問題としては頭の中にべき論が多数生まれたこと
java8だから新しく導入されたラムダ式で書くべき、デザインパターンに則るべきとか
他には、まずコンソールアプリをそれなりに作れるようになるべき等…
入門書に出てきた単語や技術・テクニックを習得しないと、
まともにプログラミングできない強迫観念にも似た考えを抱いた

だから作ることより知ることの方に比重が置かれて自己目的化しつつある本末転倒状態
0103デフォルトの名無しさん
垢版 |
2017/07/15(土) 18:55:04.65ID:qtlS5nEU
知ることはもちろんいいことだが今は考えてる暇があったら手を動かせ
クソコードを量産して初めてわかる新機能のありがたみというのもある
0108デフォルトの名無しさん
垢版 |
2017/07/15(土) 23:28:48.42ID:q4YYoqHS
>>102
書くのと知るの、どっちが欠けても良いプログラマーにはなれんよ
それにやってみればわかるがJavaの関数型インターフェースやストリームは既存の有名なデザパタと競合したりしない
0109デフォルトの名無しさん
垢版 |
2017/07/16(日) 02:57:48.81ID:1fICcUqx
>>102
知識不足ばかりが気になるなら知識の補充だけやってればいいと思う
結局さ、なにかを作りたい人は作りたいモチベを抑えられない人なんだよ
そうじゃない人がそうなろうとしても、人種が違うんだからうまくいかないよ
0110デフォルトの名無しさん
垢版 |
2017/07/17(月) 09:09:36.85ID:Ze9nWRlN
質問なのですが4GBのメモリのノートPCだと本当にAndroidシミュレータ動かないのでしょうか?
もしそうだとしたら悲しい気持ちに打ちひしがれそうなのですが
0112デフォルトの名無しさん
垢版 |
2017/07/17(月) 11:55:15.98ID:HvQCc1dg
>>110
やってみてから言えよ
環境わかんないけどうちではメモリ4Gでも動いた
つーかJavaの質問じゃなくね?
0113デフォルトの名無しさん
垢版 |
2017/07/17(月) 11:58:39.74ID:dYQc5jFE
(´・ω・`)クラス.メソッド().メソッド()
この書き方わからなかったの
最初のメソッドでクラスが返ってきて、そのクラスのメソッドをつかうときにこういう書き方するんだって
しらんかったー
ようやく読み終えたスッキリわかるJava入門には説明してなかったの
こういうメソッドふたつが並んでる書き方とかみんなは特別な説明なくても見ただけでわかるの?
この辺でプログラミングの適正とかでてくるんやろか?

それで調べてたら
クラス.メソッド().メソッド().メソッド().メソッド()
とか書くメソッドチェーンっていうのもあるらしい
これってリターンで他のクラス呼び出したらどんなものでもメソッドチェーンで書けるの?
0114デフォルトの名無しさん
垢版 |
2017/07/17(月) 12:02:33.60ID:VuxDjspY
>>111
う、う〜...

>>112
4GBでも動いたんですねっ!希望が持てます
自分でもやってみたのですがNexusでメモリー不足ですって出たもので
というかスレチですね
失礼しました
0115デフォルトの名無しさん
垢版 |
2017/07/17(月) 12:05:18.93ID:RdQgJoxw
返り値のあるメソッドを書く時、
左側に変数を用意して代入するものだと思っていましたが、
メソッドのみで書いてもエラーにならないのですね。
この場合、返り値はどこに行くのでしょうか。
無かった事にされるのでしょうか。
0117デフォルトの名無しさん
垢版 |
2017/07/17(月) 13:16:31.03ID:Uy8niamL
メソッドチェーンは、JavaScript でよくやっている。
jQuery, Underscore とか

戻り値で、this を返すように作る。
そうすれば、同じインスタンスのメソッドを、連続して呼べる

obj = obj.a();
obj = obj.b();
obj = obj.c();

obj.a().b().c();
0118デフォルトの名無しさん
垢版 |
2017/07/17(月) 15:36:43.88ID:6JtF0HSC
>>113
書ける。
0120デフォルトの名無しさん
垢版 |
2017/07/17(月) 16:09:04.23ID:6JtF0HSC
てか、streamはメソッド数珠繋ぎが当たり前だな。それできないと不便だし。
0121デフォルトの名無しさん
垢版 |
2017/07/18(火) 13:02:40.83ID:6DbTRi2A
>クラス.メソッド()
厳密に言うと、メソッドチェーンは、クラスではなく、インスタンスメソッド

そのインスタンス(this)を返すから。
bind で、そのインスタンスを束縛しているのと同じ
■ このスレッドは過去ログ倉庫に格納されています

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