★★Java質問・相談スレッド180★★ [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理 http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
(p)ttp://www.wikiroom.com/java/?path,classpath
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
・String に == は使うな。equals() を使え。※
質問時の心得
・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。
・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。
前スレ
★★Java質問・相談スレッド179★★
http://echo.2ch.net/test/read.cgi/tech/1476706523/ まずは入門書を一冊終えてきたほうが早いよ
そのレベルじゃ教えようにも言葉が通じない >>347
public abstract class Main {
public static void main(String[] args) {
Main main = new Sub();
main.height = 1.70;
main.weight = 70.0;
System.out.printf("%.2f%n", main.calc());
}
double weight;
double height;
abstract double calc();
}
class Sub extends Main {
@Override
double calc() {
return (double) weight / (height * height);
}
} >>348 確かにまだ全然わからなくて苦戦してるので入門書買ってみます
>>349 実行しつつ、わからないところは調べてみます
ありがとうございました! Java 7環境(ラムダもストリームもない)でコレクションの操作を快適に行うにはどうすればいいですか?
例えばオブジェクトのコレクションからプロパティのコレクションを作るといったような操作のたびに似たようなループ構造を持ったメソッドを書いていますがノイローゼになりそうです 仕事なら諦めて猿のようにループを垂れ流せばいい
どうせ労働時間で給料貰ってるんだろ?
当然そのループ生産作業も見積工数のうちなんだから、お前は堂々と工数をドブに捨てていればよい >>353
お前ループ書くのにどんだけ時間かかんのよw ランタイムが7でないといけないだけならKotlinを使う手もある 似たような作業が続いていると感じた時はツールを作成する機会。
今後も延々とループを書き続ける予感がするなら、
ループ構造をもったメソッドを自動生成するものを作れ。
ツール作成の手間と延々手作業を繰り返す手間との比較結果次第で。 ソース自動生成は最後の手段であり極力避けるべき
自動生成されたコードは次第に独り歩きを始め、あっという間にメンテ不能な巨大なクソの山の出来上がり たしかに節操なしに無計画にやるのは駄目だね。
まあノイローゼになるような作業のアウトプット自体がクソのような気もするが。
自身の精神のメンテも忘れず仕事がんばれ>352 asp.net coreやnode.jsのようにwebサーバー製品をインストールしないでhttpサービスを起動したいです
Javaでやるとしたらどんな選択肢がありますか? ・ソケットとストリームを使って自作する
・com.sun.net.httpserver.HttpServerを使う 「ソケットとストリーム」の部分を見た瞬間なぜか「ソフトクリーム」の映像が思い浮かんだ。
やはり暑さは人を狂わせるな。 HashSetの特定のkeyを指定して、streamを得るのってどう書いたらいいのか教えてください。
HashSet<string, string> aSet = ....;
Stream.of(aSet.get("aKey")).collect(...);
とか?書けるのでしょうか? >>379
プログラミング上達したいならまずその非論理的な考え方をやめろ
HashMapから値を取り出すことと、取り出した値に対するStreamを作ることは全くの別問題 直行する問題を分離できないプログラマやSEって意外と多いよね
だから未だにUIとDBが密結合したようなおかしなシステムばかり生産される
みんながみんな最低限の知性を持っているわけじゃないんだ 不具合があると延々パラメータ弄くり回して「実験」してる奴とかいるよね >>383
条件判定の大小関係や真偽を逆転して実験してるやついた
「実験」って表現サイコーだな >>381
うーん別問題ですか。Javaのstreamは難しいです。
今の所forループでベタに書いているのですが、streamに置き換えで効率化出来ないかと思いまして。
最初はFunctional IFでフィルタした結果をstreamに流し込めばいいのかなと思ったのですが上手く書けませんでした。途中から型が変わる様なのは許容されなかったので…
forループ以外のアプローチにはどういう方法があるか教えてください。 >>383
なんかおかしいか?
バグ調査の手法って
情報を収集する>仮説を立てる>実験(検証)する>フィードバックを得る
のループが基本だと思うけど
実験しないでどうやって調査するんだ >>385
コレクションから要素1つ取り出してそれをストリームとか、それだけ聞いたら意味不明すぎて笑うレベル
小出しにしないでどういう処理をストリームにしようとしてるのか全部書け >>385
keyだけを集めたストリームを作る
map.get(key)でマップする HashMap<String, String> m = 〜;
Stream.of("k1", "k2", "k3")
.map(k -> m.get(k)) >>386
そのサイクルの目的は問題の原因箇所を特定すること
問題が起きたり起きなかったりするときのパラメータの組み合わせを特定するためではないよ
延々実験してる奴は大抵そこを履き違えてる >>389
ありがとうございます。参考になります。
自分が書いている内容が間違いでした。
やりたかったのは、
List<HashMap<string,string>> aList =...;
というものに対して、特定keyの値を取り出したstreamを得るという事でした。
...map(x -> x.get(aKey)).map().collect()
というのはエラーでした。
今は、forループで一つずつ別のArrayListに詰めてから、改めて処理しています。 >>391
aList.stream().map(e -> e.get(key)).collect(Collectors.toList()).stream(); >>383
フールプルーフのGUIで意味もわからず全ての組み合わせから正解を探そうという育ちに基づいてるのかな
自由入力から理論に基づいて作り出さないとだ >>392
改めてありがとうございました。
上手く動きました。 >>386
ソース読めば良いんじゃないかな。ていうか、ものによっては実験ではわからないバグもあると思うよ。
例えばこれはJavaではなくC言語での話だが、メモリ確保がおかしくて確保していない領域を読んで正常に動かない時があるプログラムがあった。
こういうのが中々見つからないのはメモリ確保していない不定値が詰まっている領域が停止させられることなく読めてしまい尚且つたまたま0が埋まっていたりして無視されてあたかも正常に動いているかのような状態になるからだ。
このたぐいのバグに対しては実験を繰り返しても偶然でしか発見できない。メモリの内容が偶然異常動作を引き起こす内容になっている時にデバッガで動かしながら確認してようやっと見つけるかまたはソース解析して見つけるかだろう。
Javaの場合はメモリ確保でこういうのはないが(あっても例外が出てすぐ気づくだろうが)、入出力が絡んだりして事前にどうなるかがわからない部分に対して検査が甘かったりすれば似たような事は起こるかもしれない。 結局デバッガで実験してんじゃん
ソース読みながらうんうん唸るのは時間かかるし効率悪いよ >>395
そういうのはメモリを正しく確保できてるかを検証するテストを書いて
境界値をメインにいろいろなパラメータを渡して何度も実験するんだろ
まさかコード見ただけで直してはいおしまいなんて無責任なことはしないよな普通 デバッガを使ったとしても結局は
いろいろなパラメータで
実際に動かして
結果を検証して
フィードバックを得る
をデバッガセッションの中でやってるだけだぞ
パラメータを与える方法やフィードバックを得る方法がデバッガでは豊富で手軽というだけでしかない
デバッグの根本的な手法は同じ 473非決定性名無しさん2017/08/03(木) 15:21:30.71
JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。
446非決定性名無しさん2017/08/02(水) 22:12:48.95
JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした
自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む Javaでhtml5をビルドするためのビルダークラスってある?
オープンソースでもいい HTMLをわざわざDOMで作る奴なんかいるんだろうか
業務でXML DOMとかORMのような無駄な抽象化のなされたものばかり扱ってると、テンプレートエンジンはエイリアンに感じるのかな WebアプリじゃないからWebフレームワークは使わない前程です
ターミナルから起動して、業務上の計算を行い(ターミナルに途中経過を表示)、結果をhtmlファイル形式で出力する
これの最後の結果オブジェクトをhtmlに変換する処理を手軽に書きたいです thymeleafでいいんじゃない
springじゃなくても単体で動くし >>404
HTMLも所詮はテキストファイルなんだし、書式が固定ならHTMLに計算結果埋め込んでテキストファイルで保存すりゃいんじゃね? thymeleaf
思ってたのと違いましたが悪くない感じですね ecsってとっくに終わってたか
html4の頃に使った 過疎って来たから一つ簡単なお題でも書いておくか。
>>411のような入力に対して逆順にして>>412のように出力するプログラム。 try(java.util.Scanner in = new java.util.Scanner)
{
while(in.hasNextLine())
{
System.out.println(new StringBuilder(in.nextLine()).reverse());
}
}
何も見ないで書いたからどこか間違えてるかもしれん おうち、1行目から間違えてるし
try(java.util.Scanner in = new java.util.Scanner(System.in)) おお。できたね。じゃあ他のやり方もどんどん作って。 java.util.Properties properties = new Properties(); properties.put("python.console.encoding", "UTF-8");
org.python.util.PythonInterpreter.initialize(System.getProperties(), properties, new String[0]);
try(org.python.util.PythonInterpreter ip = new PythonInterpreter()) {
ip.exec("str = input()");
ip.exec("print(str[::-1])");
} Streamを使ったら1行なんだが?
"こんにちわ".chars().collect(ArrayDeque<Integer>::new, ArrayDeque::addFirst, ArrayDeque::addAll).stream().map(c -> Character.toString((char)c.intValue())).collect(Collectors.joining()); String rev = "";
for (char c : new Scanner(System.in).next().toCharArray()) {
rev = c + rev;
}
System.out.println(rev); 再帰使えば余裕だろ
static String reverse(String src) {
if (src.length() < 2) {
return src;
}
String left = src.substring(0, src.length() >>> 1);
return reverse(src.substring(left.length())) + reverse(left);
} "こんにちわ".chars().mapToObj(i -> Character.toString((char) i)).collect(Collectors.reducing("", (a, b) -> b + a)); for(int i = in.length() - 1; 0 <= i; i--) System.out.print(in.charAt(i)); >>414みたいなStringBuilder方式か、>>422の方式だけがアリだな
>>418の「Streamを使ったら1行なんだが?」は
冗談としては評価したいが、アホや初学者が追従しないことを望む
偉そうなこと言ったけど俺も>>423さんと同じ発想で
List<Character> list = s.chars().mapToObj(i->(char)i).collect(Collectors.toList());
Collections.reverse(list);
ここまで書いた時点でダサすぎてエディタそっ閉じした >>422とか最悪だろ
アルゴリズムに出力を埋め込むなよ >>418はStreamに副作用を混入させちゃった典型的な痛い厨2コードだから注意 >>427
出力もアルゴリズムと一部と考えてはいかがかな?
>>428
副作用はない、もしくは副作用は悪いものじゃないと考えてはいかがかな? >>427
要件確認してみ
出力するプログラム。って書いてる >>432
こういう素人がシステムを破壊するんだろうなぁ >>435
クズが
人の笑顔で食う飯の方がうまいに決まってるだろうが >>436
お前はまだ何もわかっちゃいない
こっちへきてみろ
楽しいぞ >>435
人間のクズは死ね
つか、マジで死んでくれない? >>433
こういう素人がプロジェクトを破壊するんだろうなぁ おや? お題が簡単過ぎて荒れた後にもう終わっちゃったかw
もうちょっと難しいのが良いかな?
かといって丁度いいのが今思い浮かばないのでお題募集。 ■ このスレッドは過去ログ倉庫に格納されています