Java入門・初心者質問スレ Part.8

■ このスレッドは過去ログ倉庫に格納されています
2018/06/07(木) 20:17:08.87ID:N8MsK2gr0
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.7
http://mevius.5ch.net/test/read.cgi/tech/1515549964/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:----: EXT was configured
2018/08/14(火) 23:13:33.44ID:w7/teWcla
なるほどkotlinのmain ()関数のようにエントリポイントになっているんですね

コンストラクタもメソッドですか?
2018/08/15(水) 00:49:57.59ID:BN2igdfy0
>>331
クラス名は Main じゃなくてもいいんだよ。
2018/08/15(水) 05:08:46.27ID:JGyCTF+Aa
>>332
どちらもその理解で合ってる
2018/08/15(水) 05:10:31.45ID:JGyCTF+Aa
>>333
あ、はい
2018/08/16(木) 08:36:03.18ID:nBIOAicW0
すいません教えてもらってjdkは何とか導入成功したんですが
eclipseってやつと日本語化のを導入してコードを実行しようとしたら
選択は起動できず最近の起動もありません。とエラーが出て実行できません。何度か再インストールしましたが結果変わらず。
何が原因なのでしょうか?導入で参考になるサイトあれば教えてほしいです
後JDKだけじゃjavaのコードを実行とか出来ませんよね?eclipseってやつを導入して初めて意味があるものって認識で大丈夫ですか・
そこら辺もかなり曖昧なのですが…
2018/08/16(木) 09:15:49.93ID:z0v/PTWta
>>336
間違ってる。JDKが入っていればあとはメモ帳でjavaのプログラムを書いて実行できる。

eclipseはあくまで超高機能なメモ帳だと思ってればいい。

で、そのeclipseなんだけど、そもそも古くて昔から使ってる人以外はもうほとんど誰も使ってない。
理由は今まさに君が直面しているように、自分の期待する動きをさせるのがとても大変だから。あと重い。

今からプログラムを始めるならIntelliJ IDEAの無料版か、Android Studio (無料)を使うことをお勧めする。
どちらも基本的には同じメーカーが作ってるほぼ同じものだけど、ただjavaを書くだけならIntelliJの方が余計なものが入ってなくていいかもしれない。
2018/08/16(木) 09:18:39.00ID:z0v/PTWta
>>336
IntelliJの無料版のインストールをしてる記事も見つけたから貼っとくね。

https://qiita.com/syu_chan_1005/items/46f94412f7493d6e60eb
2018/08/16(木) 11:06:42.84ID:nBIOAicW0
>>337
レスありがとうございます
メモ帳でもプログラムの実行って出来るんですか。テキストドキュメントですよね?
コンパイルとかも勝手にしてくれるなら一番軽くて楽そうですね

>>今からプログラムを始めるならIntelliJ IDEAの無料版か、Android Studio (無料)を使うことをお勧めする
こちらの方も特性まで教えていただきありがとうございます。調べてみます
後、C++やろうと想ってvisualstudio入れてあるんですけど、これはjavaでは使えないですよね
2018/08/16(木) 11:54:47.10ID:nBIOAicW0
https://gyazo.com/e3fe0cd9ac22553f62241cbe9285f1d1
手順IntelliJ IDEAの構成のここまで出来たんですが説明にある(Project name)のついたフォルダの横にある▶を押して見ましょう。
というのが見当たらず詰みました;どこにあるのでしょうか
341デフォルトの名無しさん (アウアウカー Saab-Iyvk [182.251.240.3])
垢版 |
2018/08/16(木) 13:00:59.59ID:yLNqa6vha
>>340
それのプロジェクト名は untitled だからそれの左横。

ていうかプロジェクト名を自分で入力しないで先に進んじゃったようだね。
2018/08/16(木) 13:39:19.41ID:nBIOAicW0
>>341
おかげさまで見つかりました。ありがとうございます!
フォントもdokojavaよりかっこよくモチベーション上がりそうです
Run押したら下に結果表示されたので全て導入うまくいってそうです
本当にありがとうございます
2018/08/16(木) 16:06:09.21ID:OpTecYpPa
うまくできたようで良かった。
IntelliJは本当に素晴らしくて、入力補完も神がかってるから勉強にはちょうど良いと思う。
2018/08/17(金) 13:27:44.81ID:GpawSU9CM
aかbかどちらか値が入ってる方を使いたく
defaultIfEmptyという便利なものを見つけたのですが
aもbもどちらも初期値というわけではないんですよね
初期値設定以外で使うのは変ですか?
345デフォルトの名無しさん (ワッチョイ bf8a-QxOT [223.216.119.127])
垢版 |
2018/08/18(土) 00:59:17.77ID:jNUruXDd0
言語そのものじゃない質問ですが、IDE(Android Studio とか IntelliJ IDEA)使ってても、ビルドツールって必要なんでしょうか?
もしくは有用なんでしょうか?
2018/08/19(日) 16:56:22.20ID:ouPv64vz0
今まで Eclipse からしかプログラムを走らせたことがなかったのですが、昨日プログラムをエクスポートしてノートPCに持って行ったら、

A JNI error has occurred, please check your installation and try again

というエラーが出ました。色々試行錯誤しているうちに、「実行環境JREの使用」の問題らしいと分かりました。
JavaSE-9だとエラーになって、JavaSE-1.8だと大丈夫です。
他の人にプログラムを使ってもらう時とか、どうすればいいんでしょうか?
プロジェクト固有のJREの使用という項目もありますが、このあたりは何を意味してるんでしょうか?
347デフォルトの名無しさん (ワッチョイ bfb6-bA/g [111.90.16.38])
垢版 |
2018/08/19(日) 17:23:49.79ID:Kq0ObHsK0
>>346
スタックトレースを見ないとエラーの原因がわからないよ
原因がわからないと解決策もわからないよ

コマンドから実行したらスタックトレースが出力されると思うから
それを教えてちょんまげ
2018/08/19(日) 17:41:46.22ID:KG8+gtiYF
JREが9ならJDKも9
でコンパイルしなければね
2018/08/20(月) 19:57:08.28ID:4jiZ931E0
>>347
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: handymanPackage/HandymanBMain has been compiled by a more recent
version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0

ノートPCがwindowsアップデートでクラッシュし、再インストールという惨事に見舞われてしまってレスが遅くなってしまいました。
JREは昨日初めてインストールしたのに、何でこんなことになるんでしょうか?最新版じゃないんでしょうか?
350デフォルトの名無しさん (ワッチョイ bfb6-bA/g [111.90.3.55])
垢版 |
2018/08/20(月) 20:20:40.35ID:7cywDiIN0
>>349
翻訳
| handymanPackage / HandymanBMainはJava Runtime(クラスファイルバージョン53.0)
| のより新しいバージョンでコンパイルされていますが、このバージョンのJava Runtimeは
| クラスファイルバージョンを52.0までしか認識しません

バージョン53.0はJava9
バージョン52.0はJava8

Java9以上のJDKでコンパイルしたものを
Java8のJREで実行しようとしてるんじゃないかな

対応策は、実行環境にJava9を入れるか
もしくは、Java8でコンパイルするかってところ

他の人にプログラムを作ってもらう時は実行環境のバージョンと
同じかそれよりも古いバージョンでコンパイルしてもらえば良い
2018/08/20(月) 20:41:39.99ID:4jiZ931E0
>>350
だいたい分かりましたが、よく分からないのが1.8の次が何で9なんでしょうか?
1.9とか2なら分かるんですが、何でいきなり9になるんでしょうか?
352デフォルトの名無しさん (ワッチョイ bfb6-bA/g [111.90.3.55])
垢版 |
2018/08/20(月) 21:53:30.11ID:7cywDiIN0
>>351
Java9からバージョンの形式が変わったんだよ

変えられた理由は
・メジャーアップデート
・マイナーアップデート
・セキュリティアップデート
を区別しやすくするため
353デフォルトの名無しさん (ワッチョイ d7b3-EY6Q [126.51.115.95])
垢版 |
2018/08/20(月) 23:26:30.62ID:D6aa3xEz0
ソースコード読むときにインスタンスなのかメソッドなのかがすぐに分からないんだけど、
ソースコードを読むときのコツみたいなものってありますか?
2018/08/21(火) 00:31:47.69ID:kxzeRRBS0
VSCode などでマウスホバーすれば、宣言が表示されるのでは?
2018/08/21(火) 12:02:11.35ID:5hCHO/+ya
java本格入門って本を勧められたのですが読んだことある方います?感想が聞きたいです
2018/08/23(木) 08:02:55.21ID:9OhLuljd0
すいませんスッキリわかるjava入門をやってるのですがファイルの分割の項が
環境が本と違うので分かりません;
intelli IDEAを使ってるのですがどのようにすればいいのでしょうか?
2018/08/23(木) 08:20:12.87ID:9OhLuljd0
今までずっと閉じるを使って来たので保存方法も分かりません
ググっても自動保存をオフにするとかそういう記事しか出てきません;
どこをいじればいいのでしょうか

https://gyazo.com/62228b87ec37fdce11d0b0ebfae7626d
2018/08/23(木) 09:28:06.86ID:Q+aoBvc3M
Javaはビルド周りが腐っててファイルの配置やパスの設定に対してかなりセンシティブなんだよ
そのへんで嵌るとJavaに慣れてる人でも結構厄介だから、諦めて本の通りの環境を用意したほうが結果的に時間の節約になる
今の君の経験値で取り組むべき優先度の高い問題ではないし、ましてファイルの保存方法すら類推できないレベルでは、
今目の前の問題だけ付け焼き刃で解決できたところで今後同様の問題にぶち当たったときに自分で解決できるとは思えない
2018/08/23(木) 20:01:02.13ID:9OhLuljd0
多分自己解決しました
save allを押したのにPCから何も応答がないので出来てないのかと思ってました
2018/08/23(木) 20:16:08.41ID:jFi7Ee350
普通に左側にProjectペインを出してファイルを作りたい場所の上で右クリックするだけでしょ。
そもそもパソコンをあまり使ったことがない?
2018/08/23(木) 21:51:35.73ID:9OhLuljd0
いえ、3年使ってます
ただゲームくらいでしか使ってなかったのであまり分かりません;
2018/08/23(木) 22:36:06.37ID:jFi7Ee350
ああ、まあそれじゃあしょうがない
とりあえず大抵のことをやっても壊れはしないから、調べたり聞いたりする前に適当にいじってみるのも大事だよ
それで勘みたいなものを覚えていくものだから
2018/08/24(金) 03:33:02.64ID:5X50Ptai0
パソコンは壊れないけど環境はよく壊れる
2018/08/24(金) 07:43:07.07ID:sP/ywaCGa
そうしたらそれを直すのもまた勉強
2018/08/24(金) 08:23:38.59ID:0hzqlpOdM
説教臭いスレだな
2018/08/24(金) 13:36:26.24ID:J3AVJGwl0
スッキリ分かるjava入門の多態性の説明がよくわからないんですが
親クラス型の配列を作って派生先クラスのインスタンスを代入して配列を回して一気に似たような処理を簡単に記述する
のが多態性って認識であってますか?
もうちょっと分かりやすく説明してる所あったらお願い致します
367デフォルトの名無しさん (アウアウカー Saff-2xWw [182.251.240.48])
垢版 |
2018/08/24(金) 13:45:30.50ID:MEArwTdwa
>>366
ま、配列に入れて使うとは限らないが親クラスまたはインターフェースの型でインスタンスを扱えるって事だよ。

こういうのは実装を隠したい時にも使える。
2018/08/24(金) 14:33:37.18ID:J3AVJGwl0
>>367
ありがとうございます
abstract,interfaceのクラス型でインスタンスを作れないから、このやり方を使って
インスタンスを扱えるようにするってことですかね?
親の所にないメソッドは使えないみたいなので利便性がよくわかりませんが・・
2018/08/24(金) 14:41:49.42ID:ZgK6e0Tb0
cat.cry
dog.cry

猫は猫のように鳴き、犬は犬のように鳴く。
親は親のように泣き、子は子のように泣く

自動的に実体に応じた、動作をする
2018/08/24(金) 14:59:55.60ID:l959lfiYd
>>368
そこが最大の利点でだな

同じ親を持つ個別のクラスを比較して比較したりとか
ファイルのオープン/クローズとデータベースのオープン/クローズを使う側は同じ処理で使えるようにするとかが出来る
2018/08/25(土) 06:57:20.11ID:b/emt3jR0
>>370
ありがとうございます
この本自体があまり計算問題を使って解説してないのでメリットがパッとしませんが
とりあえず何となくで覚えとこうと思います
2018/08/25(土) 07:56:40.41ID:BMpD23L5a
>>371
それはJavaというかオブジェクト指向の特徴なんだけど、いずれもうちょっと複雑なことをするようになれば自然にメリットがわかるよ。
今はそんなもんか程度の理解でいい。
2018/08/25(土) 08:03:03.50ID:b/emt3jR0
すいませんフィールドにnullなんて入れてないのにnullって表示されるんですけど
どこ直せば正常に名前が呼び出されますか?
https://ideone.com/lfTf9n
やっぱりあまり理解できてなかったかもです;
2018/08/25(土) 09:19:55.50ID:EHvwSMrp0
>>373
これの見方がよくわからんのだけど何がnullになってるの?
375374 (ワッチョイ bbb3-wF79 [60.113.15.161])
垢版 |
2018/08/25(土) 10:26:08.92ID:EHvwSMrp0
自分もjava勉強中なので試しに作ってみた
これで動いたよ
違うところだけ書いてみる

public class Hero extends Caractor {
Hero(String name){
this.name = name;
}

public void attack(Caractor m){
System.out.println(this.name + "のこうげき!");
System.out.println(m.name + "に10のダメージを与えた!");
m.hp -=10;
}
}
public class Slime extends Caractor {
Slime(String name, int hp){
this.name = name;
this.hp = hp;
}

public void run(){
System.out.println(this.name+"は逃げ出した!");
}
}

あとはだいたい同じです。
2018/08/25(土) 10:36:53.08ID:EHvwSMrp0
あ、あとキャラクターのフィールドがprivateになってるからprotectedにしたら動いたよ
これが綺麗なコードかはわからないけどとりあえずどうでしょうか
2018/08/25(土) 11:33:36.67ID:ldpy0bgQ0
>>373
継承先のクラスで同じ名前でフィールドを定義しても別のフィールドになる

attackメソッドにSlimeのインスタンスを入れているけど
Monsterクラスのnameを見てるのでSlimeに設定したnameは表示されないでnullが表示される
2018/08/25(土) 12:54:17.01ID:gxBSyOuw0
子クラスで、親クラスと同じ名前のフィールドを定義したら、ダメ!
オブジェクト指向としては、明らかな間違い!

同名のメソッドは、上書き(オーバーライド)するけど、フィールドはしない
2018/08/25(土) 13:14:33.12ID:gxBSyOuw0
for (Character c : list) { c.attack( ); }

list に、モンスターや勇者などを混ぜて入れて、
その親クラスのCharacter として、抽象化して扱えば、
if 文で、モンスターや勇者の処理を、場合分けせずにすむ

モンスターや勇者は、それぞれ実体に基づき、自動的に攻撃する。
見かけの型は親クラスだが、攻撃は子クラスのメソッドを呼ぶ

つまり、抽象化する事によって、型による分岐がなくなる!
逆に言えば、型によって分岐していたら、オブジェクト指向ではない

if モンスター型なら
if プレイヤー型なら
380デフォルトの名無しさん (ワッチョイ 6fb6-m5ma [111.90.3.249])
垢版 |
2018/08/25(土) 13:24:39.80ID:KMExyDFm0
>>379
オブジェクト指向ではポリモーフィズムが大事なんだって考えだね
2018/08/25(土) 13:51:30.74ID:QXNuAaPsM
時代遅れな考えだよね
最近は関数型の影響によって型による分岐が市民権を得つつある
C#もついにパターンマッチを導入して型による分岐を積極的に推奨するようになった
Javaも10年くらいしたらそうなるよ
2018/08/25(土) 14:36:23.71ID:t7aLMQyua
推奨はしてない
ポリモーより型スイッチの方が書きやすい場合も存在するよね
全否定しないでそういうのもサポートしていこうよってだけ
型スイッチがポリモーを置き換えるかというと全くそんなことはなくて
せいぜいデータドリブンのアプローチで書かれた僅かな部分の記述が綺麗になる程度
383デフォルトの名無しさん (ワッチョイ 6fb6-m5ma [111.90.3.249])
垢版 |
2018/08/25(土) 14:53:44.82ID:KMExyDFm0
>>382
なるほど、それなら分かる
2018/08/25(土) 15:45:54.17ID:gxBSyOuw0
>>379
のやり方では、新たにモンスターを追加しても、ソースコードを修正しなくてよい

もし型によって分岐していたら、大変。
すべての分岐箇所を修正して、テストしないといけない!

項目が追加された際の、分岐箇所の修正をなくすために、オブジェクト指向が作られた
2018/08/25(土) 18:14:08.91ID:b/emt3jR0
>>375
ありがとうございます。いけました
この本該当ページにHeroクラスしか書いてないから
コンパイル失敗したら手詰まりで;
attack(Caractor m){  ←ここがattack(Monster m)だったから動かなかったんですかね?
Slimeと同じ親持ってないと出来ないんですね。本はMonsterとなってたので本が間違えてるんですね
2018/08/25(土) 18:30:25.41ID:RUz16HRCd
>>385
その理解だと危ない
Slimeクラスフィールドの定義と使い方の問題だからスコープやらOrverrideをちゃんと理解したほうがいい

教本によくある「親は子を使えない」の典型例だぞ
2018/08/25(土) 18:37:44.34ID:RUz16HRCd
まぁとはいえ細かい部分の理解は後で修正は効くから先に進んでも別に良い
2018/08/25(土) 18:47:47.60ID:b/emt3jR0
>>377-378
フィールドはオーバーライドしないんですね。408-409ページにて普通に継承先で同じフィールドを定義してたので
いいのかなって思ってました。
同じフィールドを使いたい場合は親にあるメンバを使えばいいんですね。タメになります
ありがとうございます
2018/08/25(土) 19:35:13.69ID:b/emt3jR0
>>386
フィールド直したら仮引数がMonsterの元々あったコードでもいけました
SlimeとHeroが同じ親だとis-aの関係がおかしいと思ってたので助かりました
ありがとうございます
…もっかい読み直してみます^^;
2018/08/26(日) 02:02:46.21ID:UC7Cb0Ac0
文字列比較containsで正規表現は使えますか?
とあるサイトで使えるとあったので試してみましたが使えませんでした
391デフォルトの名無しさん (ワッチョイ 6fb6-m5ma [111.90.3.249])
垢版 |
2018/08/26(日) 02:12:09.19ID:IHxJX3F+0
>>390
使えないよ、そのサイトが間違ってる
2018/08/26(日) 03:16:41.69ID:UC7Cb0Ac0
ありがとうございました
2018/08/26(日) 10:30:20.29ID:iIRyt0Moa
Kotlinは使えた気がするから、そのサイトはKotlinと混同してるのかもね
2018/08/26(日) 13:23:38.37ID:HHP/3bjy0
Kotlin の場合は Regex のインスタンス渡すやつがあるからそれで使える。
Regex ではなく String のインスタンス渡した場合は Java と同じ動作。
395デフォルトの名無しさん (ワッチョイ dfd2-wF79 [27.139.213.198])
垢版 |
2018/08/27(月) 11:05:42.24ID:efjEsUrt0
サイトの質問で申し訳ないんですが
paizaって入力を受け付ける関数とかは使えないんですか?
int abc=new java.util.Scanner(System.in)nextInt();って打っても実行はできるんですが
入力まち画面は出ません
2018/08/27(月) 11:37:43.51ID:ba8BcfX30
出力が標準出力で、入力は標準入力。
入力の所に書けば?

ファイルから読み込みたいのなら、
ファイル名の右横にある、+ を押して、入力ファイルを作る
2018/08/27(月) 12:01:59.11ID:efjEsUrt0
>>396
了解しました
実行の下にあるのに全然気づきませんでした(@@;)
ありがとうございます
2018/08/27(月) 12:32:02.03ID:dQ3pJlXI0
EntityクラスにDBのデータを入れて加工してDAOクラスに突っ込んでViewに投げるという処理を流れ作業としてやっているのですが、クエリで絞っていきなりDAOに入れたら早いかもと感じています。Entityクラスを省くのはjava開発的にどうなのでしょうか。

もう別の新しい概念があるのかもしれませんが
2018/08/27(月) 12:54:00.84ID:HPy1/YKZa
DAOに突っ込むってどういう意味?ViewってDBのViewなのかMVCのViewなのかどっち?
java開発的にどうとか以前に曖昧な言葉遣いに注意せよ
2018/08/27(月) 21:17:09.10ID:VnEVG+oDM
こちらで質問していいのか分かりませんが…
プログラミングは全く勉強したことがありません。
仕事でジェノグラム(家族図的なもの)をよく作成するので、家族歴(結婚、離婚、出生、死亡)の時間軸に合わせてその時期にどんな家族状況だったかを図示できるようなプログラミングを作ってみたいなと思ってます。

こういうものを作るのに最適なアプリケーションってどんなものなんでしょうか。

エクセルが好きで関数いじったりするのは苦になりません。
よろしくお願いします。
2018/08/27(月) 21:31:24.25ID:dJeCT78qM
>>400
Excel好きなんだったらExcelでいいよ
VBAちょっと齧れば十分やりたいことはできるはず
本格的なプログラミングは本業にして金稼がない限り習得コストや手間の割に合わんよ
402デフォルトの名無しさん (アウアウカー Saff-2xWw [182.251.240.5])
垢版 |
2018/08/27(月) 21:31:31.57ID:l2rfNjjda
>>400
やっぱそれってExcelのマクロでやっちゃった方が良いんじゃないかなあ。
いやもしかするとマクロも要らんかも知れないよね。グラフ出せたりするし。
Excelの事は良くわからないけど。
2018/08/27(月) 21:36:06.38ID:Psg4p/SV0
最近クラスとメソッドを覚えたような素人で言葉が足らずすみません
Entityクラスを作らずDAOクラスから直接DTOクラスを作ってしまうのは良くない事なのかご意見を聞きたかった次第です
2018/08/27(月) 22:10:38.71ID:dJeCT78qM
>>403
Javaドカタワールドで一般的にいうentityってのはDBとアプリケーションコードとの間のデータの受け渡しに使われるDTOの一種にすぎない
最終的にViewに渡すものと同じなら省略するなり好きにしたらいい
エンティティは本来ドメインモデル上の登場人物であり、ビジネスロジックで主役として振る舞うべきもので、
DAOの中でデータアクセスのためだけにEntityを使うってのは本来はおかしな話
2018/08/28(火) 00:26:20.98ID:TEJeUOom0
プログラム(Java) ←→ entity ←→ DB

Rails が、migration で自動的に作るのを、手作業で作っているだけだろ
2018/08/28(火) 06:59:33.13ID:CaCX57FK0
>>404
DAOのEntityとドメイン駆動のEntityを混同してないですか?

javaドカの世界はオレオレ理解が星の数ほどありそうで怖いです
2018/08/28(火) 07:01:25.66ID:CaCX57FK0
>>405
Entityぶち込みの概念はRailsのが後じゃ
2018/08/28(火) 08:52:02.52ID:oX5PU4jWa
[DB] -- DTO(399の会社ではentity) -- [DAO(ドメインモデルではrepository)] -- DTO(ドメインモデルではentity) -- [サービス/ユースケース/トランザクション(たぶん399の会社にはない)] -- [コントローラ] -- DTO/ViewBag -- [ビュー]
こうか?
2018/08/28(火) 09:13:22.39ID:oX5PU4jWa
書いてて思ったけど、一番左のDTOはDTOというよりActive Recordかなあ
そこらへんはDAOを主軸にして見るならあくまでDAOの実装の詳細だからアーキテクチャ的にはどうでもよい部分
DAOの中でSQL書いて左から2番目のDTOに直接詰めるのももちろんアリ、というかORM使わないなら普通はそうする
2018/08/28(火) 12:36:39.57ID:CaCX57FK0
>>409
クエリ書ける軽量ORMとかならEntityクラスなんて要らねーよという雰囲気ですかね

でも、お作法としてEntityクラス作るのもありかなと
DBのリプレースに強そうなんで
2018/08/28(火) 12:39:50.34ID:CaCX57FK0
つかEntityとDTOを分けない所多いんですか?

未経験で世界が狭いので興味あります
2018/08/28(火) 13:35:17.88ID:psOOFlweM
DBの詳細を吸収するのは一般的にはDAOの仕事
更にドメイン寄りの論理的な型とシリアライズ用の型を区別したいんなら、
(DDDでいう)エンティティを返すリポジトリクラスがあって、
リポジトリが中でDAOを使ってDBからデータ引っ張ってきて行オブジェクトをエンティティに変換するのが今風だと思う
2018/08/29(水) 06:50:26.78ID:Q2YQokuo0
javaを勉強中の学生です。
画像の問題が全くわからなく、空欄の答えとできればその理由を簡単にでいいので教えて頂きたいです、、
どうかよろしくお願いします。
https://i.imgur.com/TAKEWJX.jpg
2018/08/29(水) 09:00:37.32ID:ZDG8YYaGa
ヒント
Int型のiを他の型にキャストしてみよう
2018/08/29(水) 09:18:55.27ID:nm+82+J6C
>>413
String.format()を駆使する
2018/08/29(水) 09:22:36.45ID:9k/VMyPqr
>>413
「Java String 空白埋め」とかでググろう
2018/08/29(水) 10:56:03.84ID:g0t1qxJja
ヒントありがとうございます!
自分なりに考えた結果
String.format(‘‘%.’’+i+‘‘f’’,i)
で合ってますかね?
帰って打ち込めば分かる話なのですがw
2018/08/29(水) 11:00:53.34ID:LhfUpRDDM
それにしても問題のための問題という感じだな。
解ける人向けのなぞなぞみたいなもんで、出題者に意味や知性を感じられない。
2018/08/29(水) 12:05:33.04ID:wxHokPsyM
>>417
そんな感じ
空白の書式と数値の書式が必要になりそう
2018/08/29(水) 12:26:12.61ID:agelIibQM
Utilクラスをstaticにしない意味って何かあるのでしょうか?
今の現場の仕様がUtilのメソッドをいちいちnewしなきゃならなくて
とてもいらつくのですが…
2018/08/29(水) 12:30:28.52ID:nm+82+J6C
>>417
キャストしないとエラーになる
2018/08/29(水) 13:00:25.63ID:wZaD4gXBa
実際formatの書式なんて覚えてる必要ないんだけどな
うろ覚えであーでもないこーでもないとやってる暇があったら、そんなことに時間使わずに即ググって欲しい
423デフォルトの名無しさん (アウアウカー Saff-2xWw [182.251.240.49])
垢版 |
2018/08/29(水) 18:52:47.00ID:bZ2D0xRLa
>>417
引数の側のiは (double) i という具合にキャストする必要がある。
しかしそれでは完全に一致する出力にならない。0だけスペースが一つ多くなる。

もうほとんど出題ミスのような感じがしてならないのだが、更に捻ると全てが完全一致する出力を作れる。
424デフォルトの名無しさん (アウアウカー Saff-2xWw [182.251.240.49])
垢版 |
2018/08/29(水) 18:54:57.86ID:bZ2D0xRLa
あ、ごめん。まだ左側スペース入れるformatになってなかったか。
ま、やってる内にどういうことかわかる。
2018/08/29(水) 19:39:49.84ID:b/VcLTdm0
>>424
あるよ
%6.3f
という感じ
426デフォルトの名無しさん (ワッチョイ 7bba-m5ma [118.86.92.10])
垢版 |
2018/08/29(水) 21:18:05.63ID:tTgGQU3y0
>>425
それだとこうなっちゃうんよ
https://paiza.io/projects/vMm1SEA-ycs531bGbqQjHg?language=java
_____0
___1.0
__2.00
_3.000

こやればいんだけど、こんなの問題にするかねと
https://paiza.io/projects/2mz6h5nNUYd_KrDUo3klNg?language=java
427デフォルトの名無しさん (ワッチョイ 6f3a-fHzT [175.177.3.75])
垢版 |
2018/08/29(水) 22:01:21.61ID:b/VcLTdm0
for (int i = 0; i < 4; i++) {
System.out.println(String.format("%" + ((i == 0) ? 5 : 6) + "." + i + "f", (float)i));
}
2018/08/29(水) 22:04:24.07ID:n9AQAOMs0
こんなのソラで書けても実務ではほぼ無意味だ
この問題が本当に問題のための問題だな
429デフォルトの名無しさん (ワッチョイ 6f3a-fHzT [175.177.3.75])
垢版 |
2018/08/29(水) 22:12:26.61ID:b/VcLTdm0
でも >>426 が言ってる方が自然かもね
for (int i = 0; i < 4; i++) {
System.out.println(String.format("%" + (4 - i) + "s%." + i + "f", "", (float)i));
}
430デフォルトの名無しさん (アウアウカー Sa5d-EkB7 [182.251.240.44])
垢版 |
2018/08/30(木) 09:37:14.90ID:Le3eFjina
出題ミスか引っかけ問題かな。
またはミスと気づいたけど引っかけ問題として丁度良いからミスではなかったことにして放置か。
しかし初心者に出すにはどうかという感じもする。実際にこんなのが必要とされることもなさそうだし。
もはやパズルだよなあ。
2018/08/31(金) 12:31:48.30ID:N1CziDiXM
もう古いと言われてるデザインパターンを何度も身につけようとしては挫折
写経だけじゃ理解するのは難しいですか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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