Java入門・初心者質問スレ Part.10
■ このスレッドは過去ログ倉庫に格納されています
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
Java初心者のためのスレッドです。
※前スレ
Java入門・初心者質問スレ Part.9
https://mevius.5ch.net/test/read.cgi/tech/1552143555/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured 漏れが、Haxe で、互除法を書いたもの
最大公約数 : greatest common divisor, Greatest common factor
最小公倍数 : least common multiple
公式 : a * b = G * L
static function gcd ( a:Int32, b:Int32 ) :Int32 {
var min = a, max = b;
if ( a > b ) { min = b; max = a; } // min/max を設定
while ( true ) {
var mod = max % min;
if ( mod == 0 ) { break; } // 割り切れたら
max = min; min = mod;
}
return min;
}
// gcd を使って、lcm を求める
static function lcm ( a:Int32, b:Int32 ): Array<Int32> {
var res: Array<Int32> = [ ];
res[0] = gcd ( a, b );
res[1] = Std.int ( a / res[0] ) * b;
return res;
} .collect(Collectors.toList())
この文法うんこじゃね?
頻繁に使うし、一撃 toList で省略して書けるようにしろや Java世界では直行性は利便性よりも優先される
直行する関心事はクラスとして分離され、必要に応じて組み合わせて使用できなければならない
これはJava誕生時点から続く絶対不可侵な設計思想なので、気に入らないならJava自体やめた方がいい (´-`).。oO(staticインポート、忘れられててかわいそう) てかうんこ連呼しやんでKotlin使えよ、知ってて煽ってるのか そうそう。Kotlinなら例えなくても後から作れる。 プロジェクトが eclipse に強依存してる
Kotlin が eclipse でまともに使えるようになったら起こして(現時点で使えるなら教えて)
Groovy と lombok でしのいでるけど、Groovy editor もバグりまくりで結構うんち spring の公式ドキュメントってどこにあるの?
公式ページを探しても見つからないのだが >>351
これトップページから見えないよね・・・ 知らん
「spring document」と検索してトップに出てきた
所要時間二秒
つまり公式ページからは探してない
「探しても見つからない」って言ってんだから別の方法で探せばいいし、
そう言われてて再度公式ページは漁りたくない eclipse ってラムダ式に全然最適化されてないよね
一回 eclipse まるごと何回再起動してもフリーズして、
外部エディタでラムダ式の書き方変えないとだめだった事あるわ
補完もかなり雑 まだeclipseなんて使ってるのITドカタだけだろ
どうせラムダは規約で禁止されてるから問題ないんだよ eclipseにはもう二度と関わりたくない
Javaが嫌いになった理由は9割以上eclipseのせい
VSCode乗り換えたらJavaもそんなに悪くなかった 宗教はSNSでやれゴミ
そもそも補完機能ないとラムダも書けんアホはもうやめた方が良い
アホ eclipse使うぐらいなら一般のテキストエディタとコンソールのほうがまだマシ >>358
調べなくても書けるけど補完が利くと便利ですよ
>>359
それはさすがに・・・
IDEAのJavaエディタだけ移植することできないものなのかね 同じ奴だと思うけどちょくちょくエクリプソン使えない馬鹿が騒ぐよなここ
新卒あたりだろうけどエクリプソンすら使いこなせない奴は迷惑だからとっとと転職しとけ
アホ >>361
騒いでないしeclipseはラムダ式が苦手なんよeclipseエアプなん?eclipseキチガイなん? IntelliJ って Swing だったのか
クソクソ言われ続けた Swing くんでも本気出せばあそこまで作り込めるんだな
eclipse RCP みたいな、もしくは SWT/JFace みたいな、
IDEで使ってる UI コンポーネントのセットみたいなライブラリって IntelliJ にもあります? 初めて1週間くらいだけど、フィールドと普通の関数の違いが分かりません
Cみたいにクラス外で宣言でないからクソだわ スコープの違い
ローカル変数 => メソッド/コンストラクタ/ブロック内のローカル変数
インスタンス変数 => 俗に言うフィールド
クラス変数 => static変数 Ruby でもクラスに、外からインスタンス変数にアクセスできる、
accessor(setter/getter)を定義したら、
関数だけど、変数のように見える
@hello は、インスタンス変数
class A
def hello # getter
@hello
end
def hello=( val ) # setter
@hello = val
end
end
a = A.new
a.hello = "ハロー"
p a.hello #=> "ハロー" >>368
なんかダサくない? Javaの方が良くない? class A
attr_accessor :hello
end
で>>368が書いてるのと同じgetter/setterが設定される
Javaにもproperty導入されたんだっけ? Javaだとkotlinのプロパティになるのかな・・
kotlinのプロパティとカスタムアクセサ kotlinのプロパティとカスタムアクセサ
https://qiita.com/Black_Kite/items/a9fc406c3cbfeac463ea
public class Address {
public var name: String = ...
}
fun copyAddress(address: Address): Address {
val result = Address() // 'new' キーワードは Kotlin にありません
result.name = address.name // プロパティの利用。
// ...
return result
} Javaも早くdata classを逆輸入してほしい
data class Address(var name: String)
val result = address.copy
println(result.address) classとstructを分けなかったC++の設計は正しかったのか・・・ C++のclassとstructは違うよ
structにも関数が定義できるからclassと同じだと思ってる人いるけどさ
structはメンバーがデフォルトpublicなんだよね
だから従来通り構造体にはstruct使うのが適してる
Javaにもstruct欲しかったなー
アクセサ絶対作れおじさんとかうるさいんだもん # A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffc10d4f98a, pid=16056, tid=3844
#
# JRE version: OpenJDK Runtime Environment (13.0.1+9) (build 13.0.1+9)
# Java VM: OpenJDK 64-Bit Server VM (13.0.1+9, mixed mode, sharing, tiered, compressed oops, g1 gc, windows-amd64)
# Problematic frame:
# C [awt.dll+0x8f98a]
以上のようなエラーが出ます。
swingを使っているせいだと思います。swingを使わないプログラムだと出ません。
Eclipse 2020 だとJDK14、及びJDK11でこのエラーが出ます。
JDK8に戻すとエラーが出なくなります。
Eclipse2019だとJDK13でこのエラーが出て、JDK11でエラーが出ません。
今は2019のEclipse、JDK11で使っていますが、どうしたらいいんでしょうか? Javaやると拒絶反応起こすんだが、またCの勉強やりたくなってきた >>379
オラクルJDK11を使ってswingで書いたのを
OpenJDK13でコンパイルしようとしてるの?
JRE13のawt.dllのアクセス違反って出てるから
エクリプスの実行環境設定を変えるか
Windows10のコントロールパネルのJavaアイコンから環境設定のチェックしてみたら? 環境変数設定しないでJava扱う方法ない?
フルパスならいけるが。 >>383
Javaのディレクトリに移動したらいい >>382
設定 → Java → コンパイラー
コンパイラー準拠レベル 13 にしておいて、
プロジェクトのJREシステム・ライブラリーを11と13で切り替えると13でエラーになります。 >>383
IDE使って、相対パスでJDK設定すれば? >>384
その手があったかthx
>>386
客先端末にそんなもん入れられん コマンドプロンプトやbatファイル単位で環境変数を設定すればシステム全体には影響を与えないよ フルパスを変数として使えばその変数を呼ぶだけで呼び出せるが コレクションクラスで、要素の昇順の取りだしとその削除を同時にでき、かつならび順を判定するデータに重複を許すクラスはありますか?やりたいことは例えば、
作業のリストから最も優先度の高いものを取りだし作業した結果、さらに複数の作業が発生し、それを優先度のつきで元の作業リストに追加登録したあと、更新後の作業リストについて同じことを繰り返す。(同じ優先度の作業が複数存在する)
といったことです。(実際の処理はもう少し複雑です) Comparable なオブジェクトを TreeSet に入れてみましたが、compareTo()==0 な2つオブジェクトは共存できずダメでした。(Comparable の API ドキュメントのequalsの説明どおり) >>393
ありがとうございました。まさに求めていたものでした。
自分で探せずおはずかしい。 Java初心者です。
プロパティーファイルを読み込む問題でエラーが出てしまい困っております。
まずeclipse上でプロパティーファイルを作成して、次にFileInputStreamを使ってファイルのストリームを作成して、propertiesクラスを使ってストリームからロードし、try-catch-finallyを用いて、
nation1,nation2に対応するプロパティーをそれぞれ表示するコードを作成したいです。
私は以下のように作成したのですが2つうまくいかない点があります。
・最後にfinallyを用いてストリームを閉じたいのですが、pr.close();とするとエラーが出ます。
・相対パスを用いて “Users/Shared/java/properties/java. properties”とファイルの場所を指定したのですが、実行する事が出来ません。
重い様なので二つに分けますね。 ーーーーーーーーーーーーーーー
<プロパティーファイル名:java.properties>
#国の名前を表示したい
nation1=japan
nation2=china
nation3=brazil
ーーーーーーーーーーーーーーー 以下の様に作成しましたがエラーが出ます。
ーーーーーーーーーーーーーーー
package main;
import java .io.FileInputStream;
import java .io.IOException;
import java .io.InputStream;
import java . until.Properties;
public class Main{
public static void main(String[] Argos){
properties pr= new properties();
String strpass = “Users/Shared/java/properties/java. properties”;//ファイルが見つかりません
try{
InputStream istream =new FileInputStream(strpass);
pr.load(istream);
System.out.println(pr.getProperty(“nation1”));
System.out.println(pr.getProperty(“nation2”));
}
catch(IOException e) {
e.printStackTrace();
}
finally{
pr.close();//エラー表示
}
}
}
ーーーーーーーーーーーーーーー
こちらのサイトを参考にしました
https://www.sejuku.net/blog/20794 文字コードかも
try {
InputStream istream = new FileInputStream(propertiesPass);
InputStreamReader isr = new InputStreamReader(istream, "UTF-8");
properties.load(isr);
} catch (IOException e) {
e.printStackTrace();
} これそのままコピペしてる?手打ち?
java.propertiesの拡張子の前にスペース入ってるけど >>399
コピペではなくて手打ちですね。
確かにjava.propertiesの所にスペースが入ってました。すみません。 相対パスの指定あってるのかな?
絶対パスにしてみてうまく行ったりしない? >>395
>・最後にfinallyを用いてストリームを閉じたいのですが、pr.close();とするとエラーが出ます。
prはProperties型の変数
Propertiesはストリームではないしcloseメソッドはないよ
>・相対パスを用いて “Users/Shared/java/properties/java. properties”とファイルの場所を指定したのですが、実行する事が出来ません。
実行時のカレントディレクトリからの相対パスだから
実行時のカレントディレクトリがどこなのかわからんから相対パスの指定が正しいかわからない
ファイルが見つからないのなら間違ってると思う
> https://www.sejuku.net/blog/20794
リソースリークしまくり・・・これを真に受けてプログラムを覚える人がいると思うと・・・ try (var in = new FileInputStream(strpass)) {
pr.load(in);
}
ストリームを閉じるのはこれでよい >>401
絶対パスにして実行しても何も起きないですね…
String strpass = “java.properties”;
>>402
ありがとうございます。
eclipseで相対パスを求めるにはどうすれば良いですか?
無知ですみません。
>>403
すみません。問題にfinallyを用いてストリームを閉じるようにとの指定があるので… そのサイトは先にC言語でもゴミを排出してる
侍エンジニア塾のC言語のサンプルがヤバすぎる。 - Qiita
ttps://qiita.com/hamichamp/items/7b7a7ee091a6856ac900
ハッキリ言ってこの世に存在しちゃいけないクオリティだよ
日本の生産性下げるためにわざと、としか思えない >>405
そうなんですね。信用していたのですが…
教えて頂いてありがとうございます。 >>404
> String strpass = “java.properties”;
コレハ絶対パスとは言わないよ、ファイル名だよ、ルートディレクトリからのパスを記述するのが絶対パス
> eclipseで相対パスを求めるにはどうすれば良いですか?
System.out.println(Path.of("").toAbsolutePath().normalize());
> 問題にfinallyを用いてストリームを閉じるようにとの指定があるので…
明示的に閉じるならこんな感じ
var in = new FileInputStream(strpass);
try {
pr.load(in);
} finally {
in.close();
}
tryの中で例外が投げられてfinallyでも例外が投げられると
例外の情報が上書きされてしまうから業務でプログラム書くことになったら
try-with-resourcesを使ったが良いよ >>407
絶対パスで実行したところうまく行くことが出来ました。
もっと勉強します。
みなさん本当にありがとうございました。 >>2さんがちょっと進歩したくらいの超初心者です
オープンJDK最新版(14.0.1)インストールして環境設定?みたいなのもググって見よう見まねでやりました
それでメモ帳とコマンドプロンプトでまたも見よう見まねで簡単なコードを書いてコンパイルして実行しようとするとエラー
調べてみるとJREのバージョンが古いから最新のやつには対応してないみたいな感じでした
JDKにはJREも含まれてるはずなのでおかしいなと思いましたがPCに元から入っているJREが悪さをしてるんじゃないかと思ってJRE8(1.8.0?)を1度削除しました
そして再度実行しようとすると今度はJREがないので実行できないと…
結局JRE8をインストールしなおしJDKのバージョンを8まで下げて解決させましたがどういうことだったんでしょうか
無知ですみません >>409
Java 14でコンパイルしたものをJava 8で実行しようとしたのじゃないかな >>410
それはそうなんですが、JDK14ってインストールするだけ(正確にはそうではないですが)で書くのも実行もできるようになってるんじゃないんですか?
自分はそう思ってたんですが… >>411
それは知らない
僕は事象だけみて説明がつく理屈を考えた どのJREで実行するからちゃんと指定したいなら、コマンドプロンプトから java.exe もしくは javaw.exe をフルパスで叩いて直接実行しなよ OSさんからしてみりゃ、どっちのjava.exeですか?弊社にはjava.exeは2人おりますが…ってな感じだ
環境変数でパスを通す方法と優先順位を調べるとよい javac コマンドにtarget 1.8オプションなかったけ? >>409
よくわからないが8のjreだけでなくjdkもアンインストールしてみたら? 例えばコマンドプロンプトで、メモ帳の.exe を探す。
もし複数表示されたら、上の方が実行される
where notepad
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe
つまりグローバルで、notepad というコマンドは、
上の方の.exe に関連付けられている
これが環境変数PATH。
環境変数には、(ユーザー)環境変数とシステム環境変数の2つある。
(ユーザー)環境変数は、そのユーザーだけに適用されるが、
システム環境変数は、すべてのユーザーに適用される
環境変数PATHを知らない香具師は、すべてのOS でプログラミングできない! 香具師
ヤシ
ヤツ
奴
2ちゃんねるがまだアンダーグラウンドだった暗黒時代に流行った隠語だよ Java の正規表現で、メタ文字じゃないのにエスケープできる文字って、単にミスを回避する目的のためだけですかね?
例えばセミコロンとか正規表現のメタ文字じゃないからエスケープする必要ないけど、\; と書いてもエラーでませんよね? \あ とかも出来るのか仕様上
英字以外は意味無しエスケープもできるのね… ミス回避にはなってないんじゃね?
意味無しは意味無し。それだけのことだろ。
余分なセミコロンと一緒。 JSPでJavaScriptを吐く時はセミコロンのエスケープいるかも?くらい? perl時代の謎機能を引き摺ってるとか
正規表現のパターンそのものをprintしたいとか
その時は全部の文字の前にとりあえず¥を差し込めばいい
なんにせよ正規表現の闇は深い logをファイルに出力したいのだが、何か参考になるサイト等教えてくれまいか? >>428
java logger とかのキーワードで検索すると沢山出てくると思う。 swingでウィンドウアプリケーション作りたいんやがやり方がわからんので教えて頂きたいです。
とりあえず一旦ウィンドウ表示させる所からやりたいんやけどそのやり方が分からん。
言語はJavaで開発環境はAtom
ドシロート丸出しの質問失礼しますm(_ _)m それは大変でございましたね。
自力で最低限の部分すら調べられないのであれば、
まあswingとはご縁がなかったということで。 そうそう、ドシロート丸出しじゃないですよ。
ドシロートというのは自分で調べる努力くらいはしているものです。
よって、何がわからないかくらいは把握しているものです。
あなたの場合は、努力を放棄して、全てを召使にでもやらせる感覚ですね。
人間のクズ丸出し、とでも申しましょうか。
他人を便利な道具としてしか見ていない、まあ端的に申しまして
ただのキチガイでございますね。 5chや掲示板の利用者としてドシロートという意味なら間違いではないと思うよ 色々本読んだりネットで調べたりして調べたんですが…
すみません… >>437
ここで手取り足取り教えることなんてできないんだから、質問内容をもっと具体的に絞り混んだりしないと答えようがないよ。
まずは一通りやりたいことがかかれてる入門書を買って頭から順に学習して、具体的に分からないことが出てきたらそれを質問してみたら誰か答えてくれると思うよ。 具体的…
atomのスクリプト使ってGUIの実行は出来ないのですか? 掲示板でSwingのウィンドウの出し方から教えるってのは無理があるねえ
初歩から解説してる良いサイトないですか?という質問だったら分からなくもないんだが
Googleで検索したら解説サイトくらい見つかるだろ?
プログラミングは躓く部分多いから検索の仕方を覚えることから始めたほうがいいよ ■ このスレッドは過去ログ倉庫に格納されています