X



Java入門・初心者質問スレ Part.10
■ このスレッドは過去ログ倉庫に格納されています
0240デフォルトの名無しさん (ワッチョイ 9aad-SEkD)
垢版 |
2020/05/24(日) 05:08:04.89ID:vB1Q/4mw0
Kotlinもよろしく
0242デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/25(月) 00:25:50.67ID:Ou5xo5qn0
>>241
ScannerがInputStreamをバッファリングして読み込んでてInputStreamが空になってるからでしょ
Scannerを共有すれば良い
0243241 (ワッチョイ 5b1d-s4/3)
垢版 |
2020/05/25(月) 15:20:08.37ID:6axksZvO0
>>242
回答ありがとうございます。
でも俺頭が悪いのでそれがどういうことなのかよく分からないです…。

修正はしてみました。
https://ideone.com/ZA15Gv
こんな感じでよろしいでしょうか?
0246241 (ワッチョイ 5b1d-s4/3)
垢版 |
2020/05/25(月) 16:10:14.87ID:6axksZvO0
>>245
回答ありがとうございます。

>>241>>244では別メソッドという観点からアプローチしましたが、
本当は>>243のように別のクラスでどうか、という観点でやりたかったんです。

JPCERTの記事はまだ理解出来ていませんが、
・別メソッドでScannerを使う場合は、そのクラスのフィールドでscanner変数を宣言してそれぞれ利用
・別クラスで使う場合は、scanner変数ををstatic付きで(Mainクラス等に)宣言し、クラス変数としてそれぞれ利用
という理解でいいですかね?

以下は、後者の場合のコード作成例です。
https://ideone.com/3YvgD5
0247デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/25(月) 17:11:26.36ID:Ou5xo5qn0
>>246
どうしてエラーになるかの説明でリンクを貼った

どういう理由でクラス分けようとしてるのかわからないけど
フィールドにScannerをもたせるならこうじゃないかな
https://paiza.io/projects/kIlKd0LmbbTwohyXEL0Glw

可変のフィールドをパブリックに公開するのは責任の範囲がわからなくなるので
よろしくないし、それに依存するクラスもよろしくないと思うよ
0248デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/25(月) 17:24:28.23ID:Ou5xo5qn0
一般論としてはだけどね
結局のところなんでもあり
0249デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/25(月) 17:25:10.64ID:Ou5xo5qn0
動けば正義
0250241 (ワッチョイ 5b1d-s4/3)
垢版 |
2020/05/25(月) 18:09:13.78ID:6axksZvO0
>>247-249
ありがとうございました。

理解できてないというのは、意図が分からないということではなく、
読んでみたものの内容が理解できなかったという意味です。

ちょっと俺にはその水準のコードはまだ書けないですね。
もう少し本を読んでみようと思います。
0251デフォルトの名無しさん (ワッチョイ 5a7c-rJCj)
垢版 |
2020/05/26(火) 13:44:52.25ID:RAWR5qso0
超はじめたてです。質問があります。

関係演算子と分岐分を用いる問題です。

「int型の変数a,b,cを宣言し、それぞれ適当な整数を代入する。
a.b.cのうち最大値を求めてその値を表示してください」というコードはどうすればいいですか?
0252デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 13:58:27.88ID:rvZgOtV/0
>>251
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 System.out.println(max(max(a, b), c));
}

static int max(int x, int y) {
 if (x >= y) {
  return x;
 } else {
  return y;
 }
}
0253デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:01:28.38ID:rvZgOtV/0
もしくはこう
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 if (a >= b) {
  if (a >= c) {
   System.out.println(a);
  } else {
   System.out.println(c);
  }
 } else {
  if (b >= c) {
   System.out.println(b);
  } else {
   System.out.println(c);
  }
 }
}
0254デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:03:04.65ID:rvZgOtV/0
あるいはこう
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 System.out.println(Stream.of(a, b, c).max(Integer::compareTo).get());
}
0255デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:04:39.34ID:rvZgOtV/0
またはこう
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 System.out.println(Stream.of(a, b, c).reduce((x, y) -> x >= y ? x : y).get());
}
0257デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:09:36.09ID:rvZgOtV/0
>>256
またはこう
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 int[] xs = {a, b, c};
 Arrays.sort(xs);
 System.out.println(xs[xs.length - 1]);
}
0258デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:11:53.33ID:rvZgOtV/0
>>256
またはこう
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 TreeSet<Integer> tree = new TreeSet<Integer>();
 tree.add(a);
 tree.add(b);
 tree.add(c);

 System.out.println(tree.last());
}
0259デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:17:23.59ID:rvZgOtV/0
>>256
またはこう
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 PriorityQueue<Integer> maxHeap = new PriorityQueue<Integer>(Comparator.reverseOrder());
 maxHeap.add(a);
 maxHeap.add(b);
 maxHeap.add(c);

 System.out.println(maxHeap.remove());
}
0260デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:19:48.13ID:rvZgOtV/0
>>256
またはこう
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 int[] xs = {a, b, c};
 int max = 0;

 for (int i = 0; i < xs.length; i++) {
  if (i == 0 || xs[i] > max) {
   max = xs[i];
  }
 }

 System.out.println(max);
}
0261デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:21:57.57ID:rvZgOtV/0
>>256
またはこう
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 int max = a;

 if (b > max) {
  max = b;
 }

 if (c > max) {
  max = c;
 }

 System.out.println(max);
}
0262デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:25:18.85ID:rvZgOtV/0
>>253
これバグってるwごめん
0263デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:42:03.35ID:rvZgOtV/0
あれバグってなかった、天才でごめん
0264デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:44:26.65ID:rvZgOtV/0
>>256
つまりこう
public static void main(String[] args) {
 int a = 1;
 int b = 2;
 int c = 3;

 System.out.println(a >= b ? a >= c ? a : c : b >= c ? b : c);
}
0265デフォルトの名無しさん (ワッチョイ ba52-NhWw)
垢版 |
2020/05/26(火) 14:46:23.47ID:gtoMtdIk0
>>251
3枚のトランプa,b,cがあったとき、どうやって一番大きい数字のカードを見つけるかを、まずは日本語で順を追って書いてみな。
初めから効率とかきれいに書こうとか考えず、漏れなく正しく判断する手順を考える。
選んだカードの比較結果によって次に行う手順が変わるから、そういう可能性を漏れなく考えて、a,b,cがどんな組み合わせでも大丈夫な方法を見つける。
ここまででちゃんときてから、実際にJavaのコードを書き始めてみな。
0268デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 15:59:31.21ID:rvZgOtV/0
>>256
どこまでできたん?
0269デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 15:59:55.46ID:rvZgOtV/0
あ、ごめん、間違えた
0270デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 16:00:27.57ID:rvZgOtV/0
>>251
どこまでできたん?
0274デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 17:12:24.95ID:rvZgOtV/0
プリン先生のキレが悪い
0279デフォルトの名無しさん (ワッチョイ cb12-WyE1)
垢版 |
2020/05/26(火) 21:18:50.58ID:xHxMFosX0
>>278
お前が37歳だかの無職荒らし発達障害者なのか?
人のせいにしてるんじゃねーよ。

>人のやり取りに文句ばかり言って自分は何もしない奴のせい
自分のことだろ。他人を検索システムや採点システムとしてしか見ていないで
ただ人に行為に甘えるだけの努力しない幼児が。
0281デフォルトの名無しさん (ワッチョイ 511d-MDw3)
垢版 |
2020/05/27(水) 17:20:06.78ID:UfstZGFs0
>>232
>Javaはマスターした、オブジェクト指向は完璧に理解したと豪語しているということを
そんなことは言ってない

>>279
>自分のことだろ。他人を検索システムや採点システムとしてしか見ていないで
>ただ人に行為に甘えるだけの努力しない幼児が。
そんなことはない 黙ってろ
0282デフォルトの名無しさん (ワッチョイ 93b9-AV50)
垢版 |
2020/05/27(水) 18:23:32.22ID:cA9U77a90
>>7ってまだ続けられてるのかな
0284デフォルトの名無しさん (ワッチョイ 4101-XI5K)
垢版 |
2020/05/28(木) 07:53:13.38ID:/Vusj6Nw0
過去にはこんな事も

720 名前: ◆BrBq2CJg6HGd [sage]
:2019/01/15(火) 17:39:56.71 ID:fyCw1kpR
>>711
Amazonで評判のいい本の内、なか見検索があるものということであの本になった。
それとスッキリ入門はマスター。
0287デフォルトの名無しさん (ワッチョイ 93ad-atjb)
垢版 |
2020/05/29(金) 21:26:51.69ID:Ey9K/+fw0
throw
0289デフォルトの名無しさん (ワッチョイ d99c-6p2H)
垢版 |
2020/05/31(日) 12:10:18.82ID:wcfOBf6F0
うん、それはソースコードをUTF-8で書いてるってことだからとても良いことだよ
ソースコードをShift_JISで書けば-encoding指定を省略できるけど、いまさらShift_JISファイルを量産するのはおすすめしない
0290デフォルトの名無しさん (ワッチョイ db01-5TGn)
垢版 |
2020/05/31(日) 13:00:48.17ID:0XZA+K880
>>288
ideでソース書いて実行する人がほとんどだと思う
javacを手打ちしてる人は少ないんじゃないかな
試しにjavacを実行してみたけど-encodingの指定は必要だった
入力するのが面倒ならbatファイルやps1ファイルにパラメータを書いておいて
batやpowershellからjavacを実行したり
gradleやmaven、antなどのビルドシステムを使ったり
ide使ったりとか
0291デフォルトの名無しさん (オッペケ Sr8d-moxv)
垢版 |
2020/05/31(日) 17:10:18.30ID:mlVfSsWXr
Robert Sedgewick & Kevin Wayne著『Algorithms 4th Edition』に以下の記述があります。

『One of Java's characteristic features is its policy that references cannot be modified.』

この意味が分かりません。リファレンスを変更できないとはどういうことですか?
0293デフォルトの名無しさん (オッペケ Sr8d-moxv)
垢版 |
2020/05/31(日) 17:20:54.04ID:mlVfSsWXr
>>292

回答、ありがとうございました。

メモリ上に存在しているオブジェクトのインスタンスの場所を動かせないという意味でしょうか?

たとえば、1000番地にあるオブジェクトのインスタンスを2000番地に動かせないということですか?

もし、そういう意味だとしての質問なのですが、オブジェクトのインスタンスを動かす必要なんて起こる場合があるんですか?
0295デフォルトの名無しさん (ワッチョイ 9961-DnWm)
垢版 |
2020/05/31(日) 17:52:43.57ID:hHIdU/aR0
>>293
いや、Cだと、
BYTE *ptr = top;
for ( i = 0; i < 100; i++ ) {
 (ptrを使った処理)
 ptr++;
}
とできるが、このptr++のようにポインタを変更する処理がJavaではできないという意味と見た。
なお、Javaでも、
TYPE aaa = new TYPE;
としておいて、もう一度、新たに
aaa = new TYPE;
とすることは出来るはずだが。
0296デフォルトの名無しさん (ワッチョイ a19f-67EO)
垢版 |
2020/05/31(日) 17:56:08.91ID:hm54d19c0
ちょっと違うと思う
modify referenceと言うように参照側を動かせるかどうかの話
Cの場合、たとえば配列を参照しているポインタをひとつインクリメントすると配列の次の要素を参照する
ポインタが指し示す番地を書き換えられるということ
Javaの場合、オブジェクトや配列に対する参照に加算するような概念がない
変数に新たな参照を代入して上書きすることはできても、既に作られた参照をずらしたり書き換えたりができない

その意味はJavaがCのような言語と比べて高級言語であるということ
0299デフォルトの名無しさん (ワッチョイ 9961-DnWm)
垢版 |
2020/05/31(日) 18:15:50.91ID:hHIdU/aR0
Javaは、アドレス演算子も無くて、Cの
BYTE *ptr = buf + i;
BYTE *ptr = &buf[i];
TYPE *ptr = &type_data_s[i];
に相当することができなかったと思う。
だから、結構めんどくさい事になる。
0300デフォルトの名無しさん (ワッチョイ d99c-6p2H)
垢版 |
2020/05/31(日) 19:17:38.10ID:wcfOBf6F0
インスタンスの配置されたメモリアドレスを変更できないという理解でいいよ
そうすることで「効率的なガベージコレクションができる」と説明が続いているので

プログラマーが勝手にインスタンスのアドレスを変更したり他のメモリーに複製できてしまったらガベージコレクタがそのインスタンスを破棄できなくなる
0302デフォルトの名無しさん (ワッチョイ 85e9-Alfg)
垢版 |
2020/06/03(水) 08:08:11.97ID:zIcbPltb0
swing を使ってプログラムを書いてるんですが、SwingWorker のなかで

@Override
public Integer doInBackground() {
int[] a = {0, 1};
System.out.println(a[2]);
・・・
}

とやってもEclipseのコンソールにエラーが表示されないんですけど、どうしてでしょう?
例外自体は投げられてるようで、その後のコードは無視されます。
0303デフォルトの名無しさん (ワッチョイ a99c-m9VU)
垢版 |
2020/06/03(水) 08:25:05.25ID:mZPhGC330
Javaでは別スレッドで例外が発生しても無視される
その別スレッドが終了するだけでメインスレッドは何事もなかったかのように継続する

別スレッドの例外を補足したい場合はThread.uncaugtExceptionでリスナーを登録してね
0305デフォルトの名無しさん (ワッチョイ 3e01-cXqP)
垢版 |
2020/06/03(水) 09:49:55.55ID:KDlF+5RH0
SwingWorkerは
doInBackgroundが別スレッドで処理されて
doneがedtで処理されて
doneの中で結果をgetするときに例外投げられるはず
0310デフォルトの名無しさん (ワッチョイ 3e02-Minv)
垢版 |
2020/06/06(土) 09:43:08.60ID:jRzpaj1H0
instanceof が遅いって昔聞いて頻繁に呼ばれる箇所で使うの躊躇してたんだんけど
さらっと調べた限りじゃ、今はそんなことねーんかな
こういうのは実環境で実際ためしてみないとあれだけども
0311デフォルトの名無しさん (ワッチョイ 5d9f-/HF9)
垢版 |
2020/06/06(土) 11:22:41.14ID:+gqsQGig0
今も昔もそんなことない
昔遅いと言われていたのはリフレクション

早すぎる最適化は諸悪の根元というセオリーがある
10倍100倍遅いと聞いてビックリして忌避するのは素人
たったの100倍、10万回呼ぶようなときに気にすればいい

instanceofは別の理由であまり使わない
オブジェクト設計が失敗してると多用しがち
0313デフォルトの名無しさん (ワッチョイ 3e1d-dR+O)
垢版 |
2020/06/06(土) 20:10:57.73ID:30RcyY5a0
eclipse(プレアデス)で書いてます
同じパッケージに二つのクラスをいれて片方にコンストラクタ、片方はmain型でnewを実行しているのですが、
実行した際にメイン型が含まれていないと言われます
異常を示すマーカーはないです
0314デフォルトの名無しさん (ワッチョイ 3e01-cXqP)
垢版 |
2020/06/06(土) 20:18:01.06ID:zvKvpyo/0
>>313
mainのソース見せて
0315デフォルトの名無しさん (ワッチョイ 3e1d-dR+O)
垢版 |
2020/06/06(土) 20:50:55.03ID:30RcyY5a0
package ex3;
public class Naming{
public static void main(String[] args) {
Nanashi nanashi = new Nanashi(10, 10);
System.out.println(nanashi);
}
こんな感じです
NamingクラスからNanashiクラスのことは認識できているようです
0317デフォルトの名無しさん (ワッチョイ 3e01-cXqP)
垢版 |
2020/06/06(土) 22:01:32.73ID:zvKvpyo/0
>>315
mainは問題なさそう
0318313 (ワッチョイ 3e1d-dR+O)
垢版 |
2020/06/06(土) 22:51:02.81ID:30RcyY5a0
>>316
実行するときに選択したのはパッケージなんですがそれで動かないです
Naming選択するとJavaアプリケーションでなくサーバーで実行しかできなくなります
0319デフォルトの名無しさん (オッペケ Sred-uikQ)
垢版 |
2020/06/06(土) 23:34:51.73ID:8vbqghVGr
https://ideone.com/LpcGxJ

↑のコードですが、ideoneでは意図通りに動作します。

ところが、Eclipseで標準入力から用意した整数の入ったファイルを読み込ませても、最後の"Hello World"がプリントされません。
というか、プログラムが終了しません。

原因は何でしょうか?
0320313 (ワッチョイ 3e1d-dR+O)
垢版 |
2020/06/07(日) 00:09:23.06ID:Mpyn5lAA0
他の方に聞いて解決しました。
身バレ防ぐために改変したあたりが間違い箇所でした。本当に申し訳ありません。
ご指導ありがとうございました。
0322デフォルトの名無しさん (ワッチョイ 3e01-cXqP)
垢版 |
2020/06/07(日) 00:14:47.65ID:Trgw7Kao0
あるある
0323デフォルトの名無しさん (ワッチョイ 3e01-cXqP)
垢版 |
2020/06/07(日) 00:16:25.37ID:Trgw7Kao0
>>319
Windowsなら標準入力を終わらせるためにCtrl + zを入力しないといけないよ
0326デフォルトの名無しさん (ワッチョイ 85e9-Alfg)
垢版 |
2020/06/07(日) 17:49:55.63ID:Xfgj1cuV0
Eclipse でインポート文が突然アクセスできないってエラーになります。
コードを何もいじってないのに、突然エラーになって、import 文を削除して改めて Eclipse にインポートとしてもらうか、
あと関係ない部分のコードをいじると直ってしまうとか、謎な振る舞いをするんですが、これって何なんでしょうか?
この二つのインポート文にそういう症状が出ています。

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
0330328 (ワッチョイ 151d-nxLJ)
垢版 |
2020/06/08(月) 19:43:28.03ID:ND80n/By0
>>329
ありがとうございます。

でもインタフェースは抽象メソッドしか持てないって本には書いてありましたが…
0331デフォルトの名無しさん (ワッチョイ caad-wk5h)
垢版 |
2020/06/08(月) 20:44:02.49ID:F/O1Xj+m0
interfaceそのものにはなくてもクラスに実装された形でnewされればどんなクラスでもObjectクラスから派生したクラスのインスタンスになるからなあ。
0332328 (ワッチョイ 151d-nxLJ)
垢版 |
2020/06/09(火) 00:22:03.69ID:pvFN20Lx0
>>331
ではインタフェースにはtoStringやequalsの抽象メソッドだけ
宣言されているのですか?
例えば
/* public abstract */ String toString();
のような感じで
0333デフォルトの名無しさん (ワッチョイ 4af4-sQYz)
垢版 |
2020/06/09(火) 01:02:51.85ID:d94QyX7D0
>>332
されてないんです。
0335デフォルトの名無しさん (ワッチョイ 3e02-Minv)
垢版 |
2020/06/09(火) 12:01:41.56ID:hk0ndr/Y0
Java で正規表現やるとぐちゃぐちゃにならん?
(?<!\\\\)(?:\\\\\\\\)*
とか、どんだけバックスラッシュだらけやねんて感じ
二重にエスケープ入るのほんとうんこだよね
0338デフォルトの名無しさん (ワッチョイ 2501-4AZV)
垢版 |
2020/06/09(火) 19:32:51.80ID:LnPmrJe00
初めまして。大学生でJAVA未経験のものです。以下のような課題が出ました。

ユークリッドの互除法に従い,while文を利用して変数m=12707と変数n=12319の最大公約数を求めてください.
コンソールには,結果の最大公約数に加えて,変数m,nの値の変化も出力してください.

分かる方いらっしゃいましたら教えてください。環境はできています。
0339デフォルトの名無しさん (ワッチョイ 3e02-Minv)
垢版 |
2020/06/09(火) 19:52:13.23ID:hk0ndr/Y0
>>338
それは質問じゃなくて丸投げ
何がわからないん?

ユークリッド互除法のアルゴリズムがわからないのか、
プログラムの書き方がわからないのか
やってみようとしてどこまでできて何がわからないのか
■ このスレッドは過去ログ倉庫に格納されています

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