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

■ このスレッドは過去ログ倉庫に格納されています
2020/04/01(水) 15:09:15.95ID:9COIb57q0
次スレを立てる時は本文の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
305デフォルトの名無しさん (ワッチョイ 3e01-cXqP)
垢版 |
2020/06/03(水) 09:49:55.55ID:KDlF+5RH0
SwingWorkerは
doInBackgroundが別スレッドで処理されて
doneがedtで処理されて
doneの中で結果をgetするときに例外投げられるはず
2020/06/03(水) 10:16:35.97ID:zIcbPltb0
>>305
ほんとですね。今回 done の中で get してなかったので気がつきませんでした。
get を書いてみたらスタックトレースされました。
2020/06/05(金) 06:37:37.05ID:b57gX8cD0
>>250はJava初めてか?

http://java.sevendays-study.com/

ここから始めよう。
2020/06/05(金) 08:24:38.81ID:nh9lUkVe0
>>307
250はこれでもJavaを3年も勉強してるんだぜ
先日まで「Javaの基本はマスターした」「オブジェクト指向は理解している」と豪語していたくらい
2020/06/05(金) 19:59:51.15ID:Eo58qAp50
>>307
ありがとうございます。
そのレベルはもう大丈夫です。
Java Bronze持ってます。
2020/06/06(土) 09:43:08.60ID:jRzpaj1H0
instanceof が遅いって昔聞いて頻繁に呼ばれる箇所で使うの躊躇してたんだんけど
さらっと調べた限りじゃ、今はそんなことねーんかな
こういうのは実環境で実際ためしてみないとあれだけども
2020/06/06(土) 11:22:41.14ID:+gqsQGig0
今も昔もそんなことない
昔遅いと言われていたのはリフレクション

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

instanceofは別の理由であまり使わない
オブジェクト設計が失敗してると多用しがち
312デフォルトの名無しさん (ワッチョイ 3e01-cXqP)
垢版 |
2020/06/06(土) 11:28:31.54ID:zvKvpyo/0
>>310
instanceofの方が速い
https://paiza.io/projects/oGHQb5yDMrdAWJ5c4rnlrg
2020/06/06(土) 20:10:57.73ID:30RcyY5a0
eclipse(プレアデス)で書いてます
同じパッケージに二つのクラスをいれて片方にコンストラクタ、片方はmain型でnewを実行しているのですが、
実行した際にメイン型が含まれていないと言われます
異常を示すマーカーはないです
314デフォルトの名無しさん (ワッチョイ 3e01-cXqP)
垢版 |
2020/06/06(土) 20:18:01.06ID:zvKvpyo/0
>>313
mainのソース見せて
315デフォルトの名無しさん (ワッチョイ 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クラスのことは認識できているようです
2020/06/06(土) 21:40:24.14ID:Y0dTWwTX0
左側のプロジェクトエクスプローラーNamingを選択してアプリケーション実行
Nanashiを選択して実行するとNanashiにはmainがないからエラーになる
317デフォルトの名無しさん (ワッチョイ 3e01-cXqP)
垢版 |
2020/06/06(土) 22:01:32.73ID:zvKvpyo/0
>>315
mainは問題なさそう
318313 (ワッチョイ 3e1d-dR+O)
垢版 |
2020/06/06(土) 22:51:02.81ID:30RcyY5a0
>>316
実行するときに選択したのはパッケージなんですがそれで動かないです
Naming選択するとJavaアプリケーションでなくサーバーで実行しかできなくなります
319デフォルトの名無しさん (オッペケ Sred-uikQ)
垢版 |
2020/06/06(土) 23:34:51.73ID:8vbqghVGr
https://ideone.com/LpcGxJ

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

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

原因は何でしょうか?
2020/06/07(日) 00:09:23.06ID:Mpyn5lAA0
他の方に聞いて解決しました。
身バレ防ぐために改変したあたりが間違い箇所でした。本当に申し訳ありません。
ご指導ありがとうございました。
2020/06/07(日) 00:12:05.09ID:Mpyn5lAA0
カッコ内にString型を入れる意味をよくわからずに改変していたのが原因でした。
勉強します
322デフォルトの名無しさん (ワッチョイ 3e01-cXqP)
垢版 |
2020/06/07(日) 00:14:47.65ID:Trgw7Kao0
あるある
323デフォルトの名無しさん (ワッチョイ 3e01-cXqP)
垢版 |
2020/06/07(日) 00:16:25.37ID:Trgw7Kao0
>>319
Windowsなら標準入力を終わらせるためにCtrl + zを入力しないといけないよ
2020/06/07(日) 06:17:41.52ID:vbQ41L4Hr
>>323
ありがとうございます。標準入力を利用して、ファイルからデータを入力しているのですが、その場合にはどうすればいいのでしょうか?
2020/06/07(日) 06:41:22.32ID:vbQ41L4Hr
コンソール上で、手入力でCTRL + Zを入力したら行けました。
2020/06/07(日) 17:49:55.63ID:Xfgj1cuV0
Eclipse でインポート文が突然アクセスできないってエラーになります。
コードを何もいじってないのに、突然エラーになって、import 文を削除して改めて Eclipse にインポートとしてもらうか、
あと関係ない部分のコードをいじると直ってしまうとか、謎な振る舞いをするんですが、これって何なんでしょうか?
この二つのインポート文にそういう症状が出ています。

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
2020/06/07(日) 19:12:23.20ID:Qp7b7rl+0
エラーできたときはエラー文を一字一句変えずに書きだせ
これは質問するときの絶対条件
2020/06/08(月) 16:44:32.86ID:ND80n/By0
低レベルな内容です。

interfaceには、Objectクラスに備わっているtoStringやequalsメソッドは
備わっていないのでしょうか?
329デフォルトの名無しさん (ワッチョイ 3e01-cXqP)
垢版 |
2020/06/08(月) 17:24:42.92ID:YaJ/zJSL0
>>328
あるよ
https://paiza.io/projects/PbnsoujEPFphVNA4fuozbQ
2020/06/08(月) 19:43:28.03ID:ND80n/By0
>>329
ありがとうございます。

でもインタフェースは抽象メソッドしか持てないって本には書いてありましたが…
331デフォルトの名無しさん (ワッチョイ caad-wk5h)
垢版 |
2020/06/08(月) 20:44:02.49ID:F/O1Xj+m0
interfaceそのものにはなくてもクラスに実装された形でnewされればどんなクラスでもObjectクラスから派生したクラスのインスタンスになるからなあ。
2020/06/09(火) 00:22:03.69ID:pvFN20Lx0
>>331
ではインタフェースにはtoStringやequalsの抽象メソッドだけ
宣言されているのですか?
例えば
/* public abstract */ String toString();
のような感じで
333デフォルトの名無しさん (ワッチョイ 4af4-sQYz)
垢版 |
2020/06/09(火) 01:02:51.85ID:d94QyX7D0
>>332
されてないんです。
334デフォルトの名無しさん (ワッチョイ 4af4-sQYz)
垢版 |
2020/06/09(火) 01:08:03.53ID:d94QyX7D0
といいたいとこですが
これは正確じゃあないかも
すんません

これがより正確かも


https://stackoverflow.com/questions/12124163/do-interfaces-have-tostring-method
2020/06/09(火) 12:01:41.56ID:hk0ndr/Y0
Java で正規表現やるとぐちゃぐちゃにならん?
(?<!\\\\)(?:\\\\\\\\)*
とか、どんだけバックスラッシュだらけやねんて感じ
二重にエスケープ入るのほんとうんこだよね
2020/06/09(火) 15:06:06.44ID:5Ho5rJQ80
Javaはシンプルな言語仕様が売りだから仕方ない
快適を求めるならKotlin使おうぜ
2020/06/09(火) 18:20:05.99ID:pvFN20Lx0
>>331
ありがとうございました。

>>333
>>334
ありがとうございました。
338デフォルトの名無しさん (ワッチョイ 2501-4AZV)
垢版 |
2020/06/09(火) 19:32:51.80ID:LnPmrJe00
初めまして。大学生でJAVA未経験のものです。以下のような課題が出ました。

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

分かる方いらっしゃいましたら教えてください。環境はできています。
2020/06/09(火) 19:52:13.23ID:hk0ndr/Y0
>>338
それは質問じゃなくて丸投げ
何がわからないん?

ユークリッド互除法のアルゴリズムがわからないのか、
プログラムの書き方がわからないのか
やってみようとしてどこまでできて何がわからないのか
340デフォルトの名無しさん (ワッチョイ 2501-4AZV)
垢版 |
2020/06/09(火) 20:36:36.47ID:LnPmrJe00
>>339
レスありがとうございます。
プログラムの書き方がわからないんです。
今まで int x = ~までしからなかったので、数が複数出てきたとき?でした。

私が自力でできたのはここまでです。
int x = 1;
while(x < 100){
x = x * 2;
System.out.println(x);
2020/06/09(火) 23:07:33.36ID:8tnKNbCs0
漏れが、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;
}
342デフォルトの名無しさん (ワッチョイ 6f01-xx+x)
垢版 |
2020/06/11(木) 05:06:23.04ID:ROcDVDow0
>>340
https://paiza.io/projects/_v8Ctsz3N2LRrgRKCdfPyw
2020/06/11(木) 08:01:33.68ID:IWG35Ece0
.collect(Collectors.toList())

この文法うんこじゃね?
頻繁に使うし、一撃 toList で省略して書けるようにしろや
2020/06/11(木) 08:34:18.47ID:tM5anncba
Java世界では直行性は利便性よりも優先される
直行する関心事はクラスとして分離され、必要に応じて組み合わせて使用できなければならない
これはJava誕生時点から続く絶対不可侵な設計思想なので、気に入らないならJava自体やめた方がいい
2020/06/11(木) 12:26:43.05ID:Xhu9DquXM
>>343
頻繁に使われないようにしてるんや
2020/06/11(木) 13:19:26.32ID:VnsvoRHU0
(´-`).。oO(staticインポート、忘れられててかわいそう)
2020/06/11(木) 13:21:22.64ID:VnsvoRHU0
てかうんこ連呼しやんでKotlin使えよ、知ってて煽ってるのか
348デフォルトの名無しさん (アウアウウー Sa67-Ooer)
垢版 |
2020/06/12(金) 13:13:50.67ID:Qkj+08r5a
そうそう。Kotlinなら例えなくても後から作れる。
2020/06/12(金) 16:15:25.18ID:QrZcUNbI0
プロジェクトが eclipse に強依存してる
Kotlin が eclipse でまともに使えるようになったら起こして(現時点で使えるなら教えて)
Groovy と lombok でしのいでるけど、Groovy editor もバグりまくりで結構うんち
2020/06/12(金) 16:27:54.72ID:Bqz5qNfMa
spring の公式ドキュメントってどこにあるの?
公式ページを探しても見つからないのだが
351デフォルトの名無しさん (ワッチョイ ffa5-QS4R)
垢版 |
2020/06/12(金) 19:43:34.01ID:YgRPeVV50
>>350
https://docs.spring.io/spring/docs/current/spring-framework-reference/

これじゃねえの
2020/06/13(土) 02:18:28.46ID:MoYQmMKsa
>>351
これトップページから見えないよね・・・
353デフォルトの名無しさん (ワッチョイ ffa5-QS4R)
垢版 |
2020/06/13(土) 12:10:51.25ID:9P4ZHk760
知らん
「spring document」と検索してトップに出てきた
所要時間二秒

つまり公式ページからは探してない
「探しても見つからない」って言ってんだから別の方法で探せばいいし、
そう言われてて再度公式ページは漁りたくない
354デフォルトの名無しさん (ワッチョイ ffa5-QS4R)
垢版 |
2020/06/13(土) 12:20:23.05ID:9P4ZHk760
ドキュメントなら上のProjectsからFrameworkを選んでLEARNタブを押せばいい
https://spring.io/projects/spring-framework#learn

するとこっちが見れるのでcurrentじゃなくても問題ない
https://docs.spring.io/spring/docs/5.2.7.RELEASE/spring-framework-reference/
2020/06/14(日) 17:05:05.57ID:Ax2ZQ2Xq0
eclipse ってラムダ式に全然最適化されてないよね
一回 eclipse まるごと何回再起動してもフリーズして、
外部エディタでラムダ式の書き方変えないとだめだった事あるわ
補完もかなり雑
2020/06/14(日) 17:28:09.66ID:WlKwwyUJM
まだeclipseなんて使ってるのITドカタだけだろ
どうせラムダは規約で禁止されてるから問題ないんだよ
2020/06/14(日) 17:31:25.03ID:d1a/XmKYM
eclipseにはもう二度と関わりたくない
Javaが嫌いになった理由は9割以上eclipseのせい
VSCode乗り換えたらJavaもそんなに悪くなかった
2020/06/14(日) 17:35:56.97ID:5VXzPunQ0
宗教はSNSでやれゴミ
そもそも補完機能ないとラムダも書けんアホはもうやめた方が良い
アホ
2020/06/14(日) 17:42:00.02ID:d1a/XmKYM
eclipse使うぐらいなら一般のテキストエディタとコンソールのほうがまだマシ
360デフォルトの名無しさん (ワッチョイ 6f01-xx+x)
垢版 |
2020/06/14(日) 18:05:23.43ID:shDbklTU0
>>358
調べなくても書けるけど補完が利くと便利ですよ

>>359
それはさすがに・・・

IDEAのJavaエディタだけ移植することできないものなのかね
2020/06/15(月) 00:21:36.56ID:JKPEWg760
同じ奴だと思うけどちょくちょくエクリプソン使えない馬鹿が騒ぐよなここ
新卒あたりだろうけどエクリプソンすら使いこなせない奴は迷惑だからとっとと転職しとけ
アホ
362デフォルトの名無しさん (ワッチョイ 6f01-xx+x)
垢版 |
2020/06/15(月) 00:46:25.08ID:7xMM9RPC0
>>361
騒いでないしeclipseはラムダ式が苦手なんよeclipseエアプなん?eclipseキチガイなん?
2020/06/15(月) 02:22:26.04ID:l+Pa5rRA0
IntelliJ って Swing だったのか
クソクソ言われ続けた Swing くんでも本気出せばあそこまで作り込めるんだな
eclipse RCP みたいな、もしくは SWT/JFace みたいな、
IDEで使ってる UI コンポーネントのセットみたいなライブラリって IntelliJ にもあります?
2020/06/16(火) 18:40:47.34ID:0XUtJ4yX0
初めて1週間くらいだけど、フィールドと普通の関数の違いが分かりません

Cみたいにクラス外で宣言でないからクソだわ
2020/06/16(火) 18:46:11.81ID:0XUtJ4yX0
関数じゃなくて変数だった
366デフォルトの名無しさん (ワッチョイ 6f01-gQ8P)
垢版 |
2020/06/16(火) 19:38:02.20ID:GWa7wGoJ0
いまどきフィールドくらいCにもあるやろ
2020/06/16(火) 21:00:30.33ID:JkKVZycg0
スコープの違い

ローカル変数 => メソッド/コンストラクタ/ブロック内のローカル変数
インスタンス変数 => 俗に言うフィールド
クラス変数 => static変数
2020/06/17(水) 01:41:42.72ID:H0Dcbe9T0
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 #=> "ハロー"
369デフォルトの名無しさん (ワッチョイ 7601-KnoZ)
垢版 |
2020/06/17(水) 01:49:23.80ID:gwOMFOnj0
>>368
なんかダサくない? Javaの方が良くない?
2020/06/17(水) 02:30:30.21ID:iASQjm1j0
class A
attr_accessor :hello
end

>>368が書いてるのと同じgetter/setterが設定される
Javaにもproperty導入されたんだっけ?
2020/06/17(水) 03:37:07.36ID:8C+0Fl/Sa
Javaだとkotlinのプロパティになるのかな・・

kotlinのプロパティとカスタムアクセサ
2020/06/17(水) 03:40:19.79ID:8C+0Fl/Sa
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
}
2020/06/17(水) 07:40:10.28ID:PujUJ59z0
Javaも早くdata classを逆輸入してほしい

data class Address(var name: String)

val result = address.copy
println(result.address)
2020/06/17(水) 07:43:28.51ID:PujUJ59z0
訂正
println(result.name)
2020/06/17(水) 09:06:37.06ID:WIWN99yTM
今度追加されるRecordは違う?
376デフォルトの名無しさん (ワッチョイ 1aa5-JYV+)
垢版 |
2020/06/17(水) 13:08:59.31ID:NHOh2pyw0
classとstructを分けなかったC++の設計は正しかったのか・・・
2020/06/17(水) 13:29:12.83ID:77mAKNPg0
C++のclassとstructは違うよ
structにも関数が定義できるからclassと同じだと思ってる人いるけどさ
structはメンバーがデフォルトpublicなんだよね
だから従来通り構造体にはstruct使うのが適してる

Javaにもstruct欲しかったなー
アクセサ絶対作れおじさんとかうるさいんだもん
2020/06/18(木) 01:59:35.27ID:tFeZXucj0
>>370
ますますダサくない?
2020/06/18(木) 18:02:53.51ID:5l1ileUM0
# 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で使っていますが、どうしたらいいんでしょうか?
2020/06/18(木) 18:31:09.41ID:CaSO8/BuM
Exlipseカンケーあんのそれ?
2020/06/18(木) 18:43:21.08ID:6yHSa05a0
Javaやると拒絶反応起こすんだが、またCの勉強やりたくなってきた
2020/06/18(木) 20:51:11.15ID:ao9b7VBWa
>>379
オラクルJDK11を使ってswingで書いたのを
OpenJDK13でコンパイルしようとしてるの?
JRE13のawt.dllのアクセス違反って出てるから
エクリプスの実行環境設定を変えるか
Windows10のコントロールパネルのJavaアイコンから環境設定のチェックしてみたら?
2020/06/18(木) 20:54:17.30ID:71BrrFu90
環境変数設定しないでJava扱う方法ない?
フルパスならいけるが。
2020/06/19(金) 00:20:01.01ID:eY6TPFbX0
>>383
Javaのディレクトリに移動したらいい
2020/06/19(金) 07:02:33.99ID:TxCC/8VB0
>>382
設定 → Java → コンパイラー
コンパイラー準拠レベル 13 にしておいて、

プロジェクトのJREシステム・ライブラリーを11と13で切り替えると13でエラーになります。
2020/06/19(金) 08:25:09.17ID:jPC+g1Yo0
>>383
IDE使って、相対パスでJDK設定すれば?
2020/06/19(金) 18:44:18.68ID:iM320/JZ0
>>384
その手があったかthx

>>386
客先端末にそんなもん入れられん
2020/06/19(金) 19:45:00.42ID:xzLNn8Un0
コマンドプロンプトやbatファイル単位で環境変数を設定すればシステム全体には影響を与えないよ
389デフォルトの名無しさん (ワッチョイ b761-LS63)
垢版 |
2020/06/19(金) 21:17:36.67ID:usppWfs40
>>387
だまされんなw
2020/06/20(土) 00:45:09.58ID:YZMPfrl80
フルパスを変数として使えばその変数を呼ぶだけで呼び出せるが
2020/06/20(土) 04:24:46.92ID:Os5dy8je0
コレクションクラスで、要素の昇順の取りだしとその削除を同時にでき、かつならび順を判定するデータに重複を許すクラスはありますか?やりたいことは例えば、

作業のリストから最も優先度の高いものを取りだし作業した結果、さらに複数の作業が発生し、それを優先度のつきで元の作業リストに追加登録したあと、更新後の作業リストについて同じことを繰り返す。(同じ優先度の作業が複数存在する)

といったことです。(実際の処理はもう少し複雑です)
2020/06/20(土) 04:39:38.15ID:Os5dy8je0
Comparable なオブジェクトを TreeSet に入れてみましたが、compareTo()==0 な2つオブジェクトは共存できずダメでした。(Comparable の API ドキュメントのequalsの説明どおり)
2020/06/20(土) 09:34:44.36ID:GUrzgoSo0
PriorityQueue
2020/06/20(土) 11:34:49.78ID:Os5dy8je0
>>393
ありがとうございました。まさに求めていたものでした。
自分で探せずおはずかしい。
395デフォルトの名無しさん (ワッチョイ 3f7c-1TtA)
垢版 |
2020/06/25(木) 17:52:44.82ID:Xb49DC620
Java初心者です。
プロパティーファイルを読み込む問題でエラーが出てしまい困っております。

まずeclipse上でプロパティーファイルを作成して、次にFileInputStreamを使ってファイルのストリームを作成して、propertiesクラスを使ってストリームからロードし、try-catch-finallyを用いて、
nation1,nation2に対応するプロパティーをそれぞれ表示するコードを作成したいです。

私は以下のように作成したのですが2つうまくいかない点があります。

・最後にfinallyを用いてストリームを閉じたいのですが、pr.close();とするとエラーが出ます。

・相対パスを用いて “Users/Shared/java/properties/java. properties”とファイルの場所を指定したのですが、実行する事が出来ません。


重い様なので二つに分けますね。
396デフォルトの名無しさん (ワッチョイ 3f7c-1TtA)
垢版 |
2020/06/25(木) 17:54:34.75ID:Xb49DC620
ーーーーーーーーーーーーーーー
<プロパティーファイル名:java.properties>
#国の名前を表示したい
nation1=japan
nation2=china
nation3=brazil
ーーーーーーーーーーーーーーー
397デフォルトの名無しさん (ワッチョイ 3f7c-1TtA)
垢版 |
2020/06/25(木) 17:54:46.85ID:Xb49DC620
以下の様に作成しましたがエラーが出ます。
ーーーーーーーーーーーーーーー
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
2020/06/25(木) 18:08:20.89ID:mBx+9mpL0
文字コードかも
try {
InputStream istream = new FileInputStream(propertiesPass);
InputStreamReader isr = new InputStreamReader(istream, "UTF-8");
properties.load(isr);
} catch (IOException e) {
e.printStackTrace();
}
2020/06/25(木) 18:12:40.38ID:oGWS7APta
これそのままコピペしてる?手打ち?
java.propertiesの拡張子の前にスペース入ってるけど
400デフォルトの名無しさん (ワッチョイ 3f7c-1TtA)
垢版 |
2020/06/25(木) 18:18:05.89ID:Xb49DC620
>>399
コピペではなくて手打ちですね。
確かにjava.propertiesの所にスペースが入ってました。すみません。
2020/06/25(木) 18:37:52.21ID:oGWS7APta
相対パスの指定あってるのかな?
絶対パスにしてみてうまく行ったりしない?
402デフォルトの名無しさん (ワッチョイ ff01-fk+3)
垢版 |
2020/06/25(木) 18:52:36.61ID:jGqj5Ydq0
>>395
>・最後にfinallyを用いてストリームを閉じたいのですが、pr.close();とするとエラーが出ます。

prはProperties型の変数
Propertiesはストリームではないしcloseメソッドはないよ

>・相対パスを用いて “Users/Shared/java/properties/java. properties”とファイルの場所を指定したのですが、実行する事が出来ません。

実行時のカレントディレクトリからの相対パスだから
実行時のカレントディレクトリがどこなのかわからんから相対パスの指定が正しいかわからない
ファイルが見つからないのなら間違ってると思う

> https://www.sejuku.net/blog/20794

リソースリークしまくり・・・これを真に受けてプログラムを覚える人がいると思うと・・・
403デフォルトの名無しさん (ワッチョイ ff01-fk+3)
垢版 |
2020/06/25(木) 18:56:00.97ID:jGqj5Ydq0
try (var in = new FileInputStream(strpass)) {
  pr.load(in);
}

ストリームを閉じるのはこれでよい
404デフォルトの名無しさん (ワッチョイ 3f7c-1TtA)
垢版 |
2020/06/25(木) 19:58:50.86ID:Xb49DC620
>>401
絶対パスにして実行しても何も起きないですね…
String strpass = “java.properties”;

>>402
ありがとうございます。
eclipseで相対パスを求めるにはどうすれば良いですか?
無知ですみません。

>>403
すみません。問題にfinallyを用いてストリームを閉じるようにとの指定があるので…
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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