Java入門・初心者質問スレ Part.3 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/04/04(火) 20:41:11.59ID:y0EcmGB0
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.2
http://echo.2ch.net/test/read.cgi/tech/1478863511/
2017/05/05(金) 02:04:46.46ID:YKLEnk0e
「たのしいRuby」など普通の本では、オブジェクト指向の説明は、数十ページ

でも「スッキリわかる Java入門」では、250ページもある。
つまり、Javaの本と言うよりも、オブジェクト指向の本なんだよ。
そして、すべての言語の基礎になる

だから、この本は、歴史的な本と言われるわけ。
これ以前には、オブジェクト指向を勉強する、簡単な本は無かった

未だに外国では、この本が無いから、
オブジェクト指向を勉強するのに、四苦八苦している
2017/05/05(金) 02:06:41.17ID:Pxg1OvaW
あと、javaを実行する時とJSPを実行する時、それぞれpublic class{とか<%とか必要だと思うんだけどこれがないとコンピュータが処理であると認識しないっていうこと?

それとprivate class とpublic class の違いもイマイチわからぬ
Privateはそのクラス内でしか呼び出せないっていうけど、そもそも呼び出すってなんぞや
2017/05/05(金) 02:21:57.70ID:Pxg1OvaW
>>207
もう一個質問お願いします
extends 抽象クラス
その後に具体的な処理を書くって書いてあるけど抽象クラスを定義する意味ってあるの?
具体的な内容を記述するならそもそも抽象クラスを定義する必要あるのかなって
抽象クラスとかは使い方もわからないしそもそもなんでそういう考え方をするのかも理解ができない
何が言いたいかというと例えば車っていう抽象クラスがあったとしてそれは排気量を記述しなければいけない、メソッドとして走る機能を持つって事として

後で具象化クラスでextends車で抽象クラスを呼び出した時に結局排気量=なんたら、とかを記述しないといけないじゃない
だから、そういう制約的な意味しかないんじゃないかなと
プログラミングにおいて便利にするためにそういう事をしてるはずなのに、その利便性がイマイチ掴めないのだ

今は繰り返し処理とかつかって素数を求めるプログラムを作るっていう事を書いてるレベルだから、もっとゲーム的な方に行くとその意味がはっきりするのかね?
2017/05/05(金) 02:36:54.89ID:Y8XbhYBn
もうはっきり言ってしまうとプログラミング初心者がオブジェクト指向型言語なんてものから始めるべきじゃないんですよ
たかだかHelloWorldやFizzBuzzするためになんでクラスやアクセス修飾子を気にせねばならんのだと
それでもどうしてもJavaから覚えたいなら身の丈に合わない疑問は飲み込んでひたすら前に進むしかないのですよ
2017/05/05(金) 02:40:44.53ID:iQB12R96
つっても、もう世に出てる言語の殆どはLL含めオブジェクト指向言語だろ。

。。。関数型言語の世界へようこそ?
2017/05/05(金) 02:44:11.57ID:jRdxjTk1
>>212
例えばその走るって動作には、燃料と空気を供給してエンジンを作動させて動力を生み出すという過程があって、これは二輪でも四輪でも共通である(現実にはエンジンごとに違うがここでは無視)
二輪と四輪のクラスを作るとしてそのベースになる車というインターフェースを定義するとして、両方に同じことを書くことになって、それは無駄だからその部分を抽象クラスとしてまとめてしまおうという考え
間違ってたらスマソ
2017/05/05(金) 02:50:09.25ID:TDjvniVu
>>210
>未だに外国では、この本が無いから、
>オブジェクト指向を勉強するのに、四苦八苦している

それはないww
そこまで書くとステマかと思うわ
2017/05/05(金) 02:54:03.98ID:Pxg1OvaW
>>212
そういう前提があるっていう事でしょ?でも実際処理で車のエンジンの仕組みは重要じゃなくてどのようにそれらの車が動くかが重要になるのじゃない?
マニュアル車ならクラッチ操作、オートマならレンジチェンジ(でいいんだっけ)などの具体的な操作を個々に記述して行くと思うんだけど共通の仕組みそのものを定義する事は便利さには繋がっていないんじゃないかなって
確かに車はエンジンがないと動かないけど、プログラム上では(ってかユーザーにとっては)エンジンがあるかないかなんて関係が無いんじゃないの?
定義しないといけないっていう具体的な例があったら教えて欲しい
2017/05/05(金) 02:59:46.55ID:Pxg1OvaW
窓はガラスでできている。そのガラスを使って窓を開け作った上でこっちに押したら閉まる、こっちに押したら開くなどのことが出来るようになる
だからまずはガラスでできているという共通前提定義が必要となる。それはわかる
でも実際プログラム上でそれがどう有効なのかがわからない
人間クラスに名前はまず名前、年齢が必要、その上で個々の動作をして行くわけだけど定義してそのクラスを呼び出しても結局年齢とかは手書きで書いて行くわけじゃん

例えばどういう時にオブジェクト指向を使ってるのかとかあったら教えて欲しい、ゲームとかでもいいので
2017/05/05(金) 03:13:17.49ID:jRdxjTk1
確かに個々の動作を書くのには抽象クラスは全く役に立たないよ、ただプログラムを動かすにはその外から見て重要ではない部分が必要なわけで、その部分が共通だとコピペするのは簡単だが後々の修正が大変、だからまとめておくと
2017/05/05(金) 03:20:10.72ID:Pxg1OvaW
>>219
具体的にプログラムの世界だと何をまとめるの?実行するための記述以外にプログラムそのものを動かすために必要なものの具体例がわからないのだが
2017/05/05(金) 03:37:46.29ID:jRdxjTk1
JavaにはListって可変長の配列を作るためのインターフェースがあるけど
http://docs.oracle.com/javase/jp/7/api/java/util/List.html
これだけのメソッドを実装しろと要求してくる
そしてこれを使って中身の違う実装を作るときに全部を何度も実装するのは骨が折れる作業だよね
そこでAll系のメソッド等他のメソッド呼び出しで書けるものを抽象クラスに書いておけば実際に実装するときに書かなくてよくなる(効率化したいとかだと書いてもよい)
折角クラスライブラリのソースあるんだしAbstractList辺りのソース見てみるといいよ
2017/05/05(金) 03:43:35.59ID:jRdxjTk1
分かりにくい説明しかできなくてすまんの、多分現実の物体で考えずにプログラムとして直接考えるのが一番の近道じゃないかな
2017/05/05(金) 03:50:24.78ID:TDjvniVu
>>220
たとえば共通の手順とか

テンプレートメソッドと呼ばれるパターンの例(HeadFirstデザインパターンより)
http://i.imgur.com/4m0ZWv7.png
コーヒーでも紅茶でも抽象化した手順は同じたし
お湯沸かしたりカップに注ぐ部分は全く同じ

今はJavaでも抽象クラスとは違う方法でも実装できるけど
こういう基礎の理解は必要
2017/05/05(金) 04:16:15.80ID:JPrvtXpw
ゲームのマップを作ろうと考えています。
マップ画像を表示させ、マップ上の任意の部屋をクリックすると、その場所の名前(ロビー、キッチン、ベッドルーム、など)を表示するようにしたいです。
この処理を実装するには、どのような方法がスマートでしょうか?
各部屋の形は四角形ではなく、円や三角形など複雑な形をしているので、単純に四隅の座標を部屋名とともに配列に格納しておき、クリックした座標を内部に含むものをfor文で回して探索する・・・という方法は難しいです。
どうかお力添えください。
2017/05/05(金) 05:14:23.88ID:YKLEnk0e
ゲームは、オブジェクト指向の最高峰

キャラクタークラスから、勇者・魔法使いなどを、
モンスタークラスから、スライム・ゾンビなどを派生させる

is-a, has-a とか勉強すれば?
消防車は車の一種。is-a。継承
車はハンドルを持っている。has-a。部品

「スッキリわかる Java入門」では、オブジェクト指向の説明が、250ページもある。
ここ20年間、世界中の中年のCプログラマーが、皆、C++へ移行できずに撃沈している

オブジェクト指向がどれぐらい難しいか、分かるでしょ?
だから、スッキリが日本中に、革命を起こした
2017/05/05(金) 05:22:28.10ID:YKLEnk0e
>>224
java.awt.Shape interfaceで定義される、containsメソッドは、
指定された点が、図形の境界の内側にあるか否かを判定する

「java 図形 内側」などで検索!
2017/05/05(金) 12:17:52.64ID:Oxs8iPV6
超単純にやるなら
・種別(矩形、三角形、円)
・パラメータ(最大4つ)
 頂点の絶対座標もしくは円の中心座標&半径

とやって判定時などに種別に応じて処理を分ける

それと一つの部屋?を分割して単純な図形の組み合わせにする
回転が必要なら矩形を2つの三角形に変える

スクロールとか必要ならもっと面倒だけど
プロパティかパラメータを増やせばなんとかなるべ
2017/05/05(金) 12:24:15.13ID:jsHCnOkz
Javaプログラマはオブジェクト指向をよくわかってない人が多い
C#プログラマはみんなよくわかってる
C#マイクロソフト公式の参考書など良書が揃っているからね
Javaはろくな本がない
初心者をごまかしてわかった気にさせるような本ばかりだ
2017/05/05(金) 12:42:33.54ID:8b9qfJY2
それってあなたの感想ですよね?
なんかそういうデータあるんですか?
2017/05/05(金) 12:50:52.07ID:XP+Q0OKG
>>229
会社にあります
2017/05/05(金) 12:55:46.33ID:Dvx8ftQc
いちいち部屋分割して図形の頂点座標測ったりとか種別とかやってられないでしょ
元のマップとは別に、それぞれ部屋ごとに色で塗りつぶしたマップを用意して裏で読み込ませといて、クリックした地点のカラーコード読んで色に対応した部屋名を取り出す
ってのを考えたんだけどどうよ
2017/05/05(金) 13:14:01.06ID:8b9qfJY2
>>230
それ「宿題家に忘れました」と同レベルじゃないですかー
2017/05/05(金) 13:22:43.96ID:XP+Q0OKG
>>232
バカなの?
宿題と同じ感覚で会社のデータ持ち出しちゃうんだ君は
2017/05/05(金) 13:28:33.31ID:8b9qfJY2
>>233
説得力が皆無だからそれ以上非論理的な話をするのはやめとけと言っているだけですよ
データを他人に見せられない主張に意味などない
まぁ所詮2ちゃんだし、それでもわめきたければ好きにすれば?
2017/05/05(金) 13:29:35.85ID:Up1lvbHo
まぁポンコツな会社にはポンコツが集まるって言われてるし
2017/05/05(金) 13:41:46.76ID:XP+Q0OKG
>>234
そもそも君を説得する必要もないしね
事実は事実として変わらないことだから君がどう思おうと何の影響もない
2017/05/05(金) 13:49:41.18ID:n4hNDFR+
会社にありますはガイジすぎる
そんなん通るならC#プログラマーは全員屑!証拠は俺の会社にある!
2017/05/05(金) 14:21:00.68ID:XP+Q0OKG
というか俺の会社じゃなくてもどの会社にでもある
過去の案件を分析すれば答えは出るよ
Javaがいかに失敗を生み出してきたか数字ではっきりと出てくる
GW明けにでも調べてみるといい
2017/05/05(金) 14:28:17.47ID:xfO5LNpr
今から勉強しようとしてる人向けの話じゃなかったのか?
今から勉強しようとしてるのなんて学生に決まってるんだから会社の資料は見れないでしょ……
まさか社会人にもなってやっとJava勉強しようとしてる意識低い系の話なのか?
2017/05/05(金) 14:30:45.16ID:EB13pOeh
去年調べた結果だと、Javaの方がC#より三倍生産性が良かったよ。
今年は知らんが、多分同じじゃない?
2017/05/05(金) 14:35:53.90ID:XP+Q0OKG
>>239
Javaはそういう意識低い人ばかり
2017/05/05(金) 16:17:42.92ID:Pxg1OvaW
public class void String NewClass() {

System.out,.print ("hello");

}

実行しようとしてもエラーが出る 
identifierがありません。
全く持って意味が分からない…
2017/05/05(金) 16:28:41.11ID:8b9qfJY2
おまじないがおかしいよ
ますおまじないをそらで書けるようになってから応用しなさい
あとoutの後ろの,はいらん
2017/05/05(金) 16:40:39.14ID:Pxg1OvaW
>>242に関しては自己解決しました。
もう一つ質問だけどとりあえずネット上にあるサンプルを使ってコードを書きまくってみようと思ってるのだけどなにかコードを記述したいって思ったときに
public static void とかprivateとかいろいろあると思うんだけど何を基準に選んだんラいいの?
あと、いまやっとこさこれが書けたんだけどこの言葉から記号一つ一つの意味まで全部把握しておいた方がいい?
public class NewClass{
public static void main(String args[])
{
System.out.print("表示できるか??");
}


}

main このmainっていうのはクラス名?あとどこかでclassは一つのファイルに一つまでしか書けないって書いてあったけどこれにはclassが入ってないけど例えばオブジェクト指向で新しいクラスを作りたいってなった時に
classはファイル名と一緒でなければいけないって書いてあったのだけど、どうやって考えたらいいの?
2017/05/05(金) 16:48:22.02ID:Pxg1OvaW
多重に質問申し訳ない
言葉を覚えての色々な事を質問して回る子供だと思って聞いてほしい
javaの構文を覚えるときは皆一つの熟語として覚えてる?
例えばこういうときは
public static void main(String args[]){  を使うんだ、みたいなものを一つひとつの意味を考えないで丸ごと覚えているイメージ?
あとついでにもう一つ頼む、args[]の[]は配列を表すものだったと思うんだけどよく見るこのコードはなんで配列を指定しているの?
2017/05/05(金) 17:03:12.00ID:Pxg1OvaW
お願いします
今まで出力はコンソール上またはjspをつかってweb上だけに計算結果を出力させてたんだけどより実践的にwebにつながなくてもコンピュータ上だけで処理させるには何が必要になってくるの?
あとテキストボックスとかラジオボタンとか使いたいのだけどその際にはimportとか必要になってくる?
2017/05/05(金) 17:06:37.66ID:UN44kkRF
全てに意味があるんだから全て覚えなさい

「ファイル名 class」
「mainメソッド」
「アクセス修飾子」
「staticメソッド」
「引数」
「戻り値」
「戻り値の型」
「コマンドライン引数」

このあたりで調べなさい
全部まともに答えるには金取らんと割に合わんレベルだよそれ
2017/05/05(金) 17:06:41.65ID:SKOR9dHG
public
static
void
main()
String args[]
{
それぞれの意味を覚えてる

args[]は実行時の引数の格納するから
javac test.javaでコンパイルした場合
実行時にjava test aaaとするとarg[]にaaaも含まれる

コントロールはjava コントロール名とかで調べる
2017/05/05(金) 17:14:34.88ID:Up1lvbHo
とりあえずスッキリJava読んだほうがよくね
2017/05/05(金) 17:26:34.34ID:G0OfeBgr
個人的には最初から1から10まで理解しようとしたら
頭がパンクするだろうから、ある程度は絞ったほうが良い

@public class Tes {
A public static void main(String[] args) {
B System.out.println("hello java");
}
}

まずは
@:ファイル名とクラス名が同じじゃないと、Javaのプログラムって動かないんだなーぐらいは覚える
A:とりあえず動かすにはこの魔法の呪文が必要なんだぐらいしておく
B:文字列出力するのはこう書くのかー
ぐらいが理解できれば次に進んで良いと思うわ
最終的にはpublic、static、void、stringとかの意味も理解する必要はあるけど
それを利用する(あるいは目的を持って変更する)場面を知ってからじゃないと、結局分からず仕舞いで終わるだろうし

上で書いたソースしか知らない段階でvoid調べて、「何も値を返さない時はvoid型を指定する」とか見ても
理解できるどころか「値を返す、返さないってなんやねん!」ってなって意味が無い
2017/05/05(金) 17:43:33.01ID:RNJ7gaAH
どこから突っ込んでいいのか。。。
ここで質問するより入門書読むなり、入門サイト読むなりした方が良いよ。
分からないことが整理出来てから質問しなさい。
そこまで何も知らない状態で質問されても、入門書くらい読んでからにしろよと呆れられるだけ。
2017/05/05(金) 20:46:02.93ID:Pxg1OvaW
わかりました。
じゃあすっきりJAVA入門ていうの買ってみることにします。
ちなみにこれをやれば基本的な文法は理解できるようになりますか?
自分は今コーディングするたびに〜〜classにはメソッドがありませんとか型の開始が不正ですとかidentifierがありませんとか
そういうエラーメッセージに苦しめられてる状態ですけどそういった部分も解決できるでしょうか?
それといろいろなコーディングの例ものっていたりするでしょうか?
とりあえず今やりたい事としてはアプリ上にテキストボックスなどを置いてユーザーからの入力に対して対応できるプログラムが出来ればいいなと思ってます
つまり、今は素数一覧判定するプログラムを作ってあるんですけど内部で数値を書いてファイルを実行して初めて表示されるのだけど、コードの内部を知らない人に使ってもらえるようなアプリを作れるようになるかというところです

自分全くの初心者なのでわかりやすさと、どのレベルまで行けるかっていうのを教えてもらえると嬉しいです、それと、第二版と二種類あるみたいだけど安い方を中古で買えば問題ないですか?
2017/05/05(金) 20:47:26.36ID:3kP3AuyS
GWでJava勉強してるやつ、進捗どう?
手遅れ感感じた?
2017/05/05(金) 20:50:14.80ID:jRdxjTk1
>>252
メモ帳か何かでコード書いてるのだとしたらIntelliJ使ってみるといいかもな
2017/05/05(金) 20:59:16.11ID:Pxg1OvaW
>254
netbeansでやってますよ
2017/05/05(金) 21:07:56.45ID:MjMW9HuU
この年でJavaとか、他にもっとやることあるだろ
2017/05/05(金) 21:22:34.99ID:RNJ7gaAH
>>252
mainメソッドねーよとか、正しいmainメソッドの書き方じゃねーよって怒られてるだけ。

入門すれば何怒られてたのかも分かるから。
2017/05/05(金) 21:31:22.44ID:RNJ7gaAH
入門書は大抵古い面倒な書き方->新しい楽な書き方の順で紹介する。
なので長い目で見たら新しい入門書のが良い。
到達出来るレベルは楽な文法覚えてるだけで何か作れる訳じゃ無い。
どっち読んでも大差はない。

英語覚えたから英語ペラペラか?
言語ってのは使ってナンボ。

入門したら、簡単なので良いからさっさと何か作る。
2017/05/05(金) 21:51:52.06ID:Pxg1OvaW
>>258
なるほど

つまり作るための下地は作れると考えて大丈夫?
2017/05/05(金) 21:55:05.15ID:RNJ7gaAH
うむ。
最低限はね。
複雑なのはWebで本家のドキュメント眺めながらとか。
あなたのアイデア次第の部分のが多い。
作り方を思いつけるか。
調べられるか。
知ってるか。
2017/05/05(金) 22:15:47.72ID:Pxg1OvaW
>>260
発想の部分は好きだから多分いけると思う
むしろ色々な事をどんどん広げて行きたいと思う
事務職でマクロやってた時も結構複雑な処理をネットで調べたりして実装してた
知ってるか
っていうところがちょっと不安だけど大丈夫かな
でもとりあえず「オブジェクト指向 例 」「メソッドとは」「クラス 定義 必要性」とかわからないままを永遠にループ検索することはとりあえずなくなりそうでよかった
早くAmazonからこないかな
2017/05/05(金) 22:48:55.45ID:G0OfeBgr
しかしJavaで書籍というか入門書無しで勉強する人おるんだな
大体はスッキリの入門、やさしいJava、明解のどれかから手を付けて始める印象が多い

というかせっかく入門書一杯あるんだから利用しない手はないべ
2017/05/05(金) 22:49:01.87ID:RNJ7gaAH
知ってるかは思いつけるかと調べられるかの繰り返しによる積み重ねだから、心配は要らない。
264デフォルトの名無しさん
垢版 |
2017/05/05(金) 22:49:39.29ID:+CHRnsuY
エネルギーを2chに使うのをやめないと本読んでも意味ないんじゃないかな
2017/05/05(金) 23:14:46.17ID:GcsXwLgt
配列について質問です。
…{1,2,3};
という表記法と、
…new int[]{1,2,3};
という表記は何か違いがあるのでしょうか?
2017/05/05(金) 23:16:03.94ID:yjG7qa8A
>>265
>>31
2017/05/05(金) 23:39:09.89ID:GcsXwLgt
>>266
アラ探しは止めてもらえます?
2017/05/05(金) 23:42:36.40ID:RNJ7gaAH
newの方が本来の書き方で、newしない方はCからの移行組のために単純に書けるように後から作られたもの。
269265
垢版 |
2017/05/06(土) 00:35:25.29ID:gDC1nU6T
>>268
そうなんですね。ありがとうございます。

どちらかではOKでどちらかでは駄目という場面とかありますかね?
2017/05/06(土) 00:39:00.98ID:9tv813Aq
無い。
楽な方選ぶ。
(なので大抵newしない方で書かれる)
271265
垢版 |
2017/05/06(土) 01:34:48.70ID:gDC1nU6T
>>270
分かりました。ありがとうございました。
272デフォルトの名無しさん
垢版 |
2017/05/06(土) 02:51:48.75ID:GtACJVEu
インスタンスの同一判定で違いが有るという話を見たこと有るが、
配列のインスタンスを判定する事自体がダメな事だと思ってる。

それより、int result[]=new int[10];
なんて書き方は覚えたての頃に少しした程度で、
今は、int result[]={ 0,1,2,3,4,5,6,7,8,9 };こう書くよなぁ…
C言語は知らなくても慣れてくるとみんなこうならない?
2017/05/06(土) 03:07:22.28ID:9tv813Aq
なる。
実はC++だとnewする、しないはスタックかヒープかの違いがあって、new int[n]とか宣言時に[]内に変数使える、使えないとか、配列作れる限界もnewした方が大きいとか違いがある。
でも、Javaは基本型以外は全部ヒープに置くので配列はヒープにしか置かない。
C形式がまだ無かった初期の入門書には何故配列をnewするのかの解説まであった。

Javaにおいてnewするしないに違いが無いなら、してられっかよ。って誰も書かなくなった。
274265
垢版 |
2017/05/06(土) 04:21:51.57ID:gDC1nU6T
と納得したのですが、突っかかる箇所があるのでまた書かせて頂きます。すいません。

今読んでいる書籍の問題で、(必要な個所だけ抜粋します)
public class Player {
int[] hand; // 手札配列
}
の実行用クラス(Exec)を作成しろという問題で、
Player player1 = new Player();
とした後、player1の手札配列に{2,13,26,13,48}をセットしろとのことなんですが、
player1.hand = {2,13,26,13,48};
とするとコンパイルエラーになるんですよね。解答には、
player1.hand = new int[]{2,13,26,13,48};
と書いてあり、そう入力するとエラーは無くなります。
なのでこの二つの表記法に文法的な違いがあるのでは?
と思ったわけです。

改めて皆さんの見識を伺いたいです。
本には違いはほとんど書かれていませんでした。
275デフォルトの名無しさん
垢版 |
2017/05/06(土) 04:31:13.41ID:5R6Ql+c4
>>274
new を省略できるのは初期化の時だけ。あくまでも初期化の時だけ特別に書くことを省略することが許されている。
(書かれていないだけでやることは同じになる)。
2017/05/06(土) 04:34:42.43ID:feNHzNcv
>player1.hand = {2,13,26,13,48};
>とするとコンパイルエラーになるんですよね。解答には、

そのエラーメッセージで検索すべき!
それでも分からなければ、そのエラーメッセージをここに書いて、質問する
2017/05/06(土) 04:44:15.46ID:feNHzNcv
推測で書くけど、

型 a = {2,13,26,13,48};
これは、配列リテラル。
初期化時の、特別な書き方

たぶん実行文じゃない。この行で実行されるわけではない。
アプリの開始前に、コンパイラが置き換える。
即値、つまり、既に何もせずとも値になってる

型 a = new int[]{2,13,26,13,48};
一方、これは実行文。この行で、newが実行される
2017/05/06(土) 08:30:46.24ID:9tv813Aq
>>274
Cだとそもそも宣言時以外はそう言う書き方出来ないんだが、そうか、クラスのフィールドだと宣言と初期化が別れるな。
宣言と同時に初期化する時のみの特別な記述としてnewしない記述は使える。
それ以外はnewしないとダメ。
説明が雑ですまん。
理由は基本型じゃ無いから。
ヒープに置くのは全てnewが必要で、記述上特別扱いは配列の宣言と同時に初期化する時と、文字列のみ。
Cなんて、宣言と初期化が別れたらforで一個一個配列に値を入れるしか無いって言う。。。
279265
垢版 |
2017/05/06(土) 11:15:43.19ID:gDC1nU6T
多くのレスありがとうございます。

エクリプスでは「配列定数はイニシャライザにおいてのみ使用可能です」と表示されました。
皆さんの言うように{1,2,3}という表記法は初期化時のみしか使えないということみたいです。
でも>>274の場合は初期化に相当しないのかな、と思うのですが…。
2017/05/06(土) 12:34:15.65ID:RxOQwEqu
宣言文の一部分である初期化子やろ
2017/05/06(土) 13:07:31.76ID:3Bn/MS7d
>>279
それは初期化であってる。
んで、newしなくて良いのは「宣言と同時に」初期化する場合のみ。
クラスのフィールドでint[] a;ってなってるのが宣言。
2017/05/06(土) 13:09:11.36ID:3Bn/MS7d
x int[] a;
o int[] hand;

人のコードよく読んで無かった。。。
2017/05/06(土) 13:44:30.80ID:jYP/Wf/9
>>279
ありがとう。
2017/05/06(土) 16:41:50.05ID:5R6Ql+c4
>>277
書き方違うだけでコードは同じように new する形式になっていると思うが。
というのは何れの書き方でも a[1] = 2; みたいに内容を後から変更可能だから。
ただし static の場合は書き換え可能なデータ領域に最初からインスタンスがあって
(つまりコンパイラがそれを含めた形でバイナリを作ってあって)そこへの参照を a に
代入するだけになるかも知れない。
static でない場合は普通に実行人ヒープに領域確保してからリードオンリーの
データ領域(コンスタントプール)から初期値をコピーしていると思う。
2017/05/06(土) 16:46:57.57ID:HAuELHoN
まあどうなってるか見たいならコード書いてコンパイルしてjavap通せ
286265
垢版 |
2017/05/06(土) 17:14:44.21ID:gDC1nU6T
>>281
そうなんですね、分かりました。

繰り返しになりますが、多くのレスありがとうございました。
2017/05/08(月) 17:19:02.28ID:C0kEGIYB
今日からjavaの本で学習し始めたんだけど

慣れたらpublicなんたらかんたらとか長い分も自分で一からかけるようになるの
2017/05/08(月) 17:24:11.64ID:3+foG7x1
IDEに生成させるもんだろ
2017/05/08(月) 18:34:23.43ID:YdKqfeaH
確かに自動生成されるけど、慣れるといつのまにか暗唱できるようになってる。
という感じ。
2017/05/08(月) 18:54:52.71ID:6xooNmVM
IDEでもテキストエディタでも入力補完機能があるから
わざわざ覚える事でもない
291デフォルトの名無しさん
垢版 |
2017/05/08(月) 20:55:56.19ID:epGpOLAg
>>287
なる。
1〜2秒ぐらいで打てるようになる。
2017/05/09(火) 08:36:16.33ID:wOo51I5g
まぁでも本で勉強してればmainメソッドの成り立ちなんてじっくりねっとり解説されるから嫌でも覚えちゃうよね
2017/05/09(火) 12:44:24.36ID:zagaBJts
画像解析のソフトを使うのにJava Library Pathを追加しないといけないのですがJavaをインストールした後の最初から躓いています(;;)
https://github.com/qupath/qupath/wiki/Working-with-MATLAB
この真ん中あたりに書いてある
Option #2: Control MATLAB from inside QuPath
-- Add MATLAB libraries to QuPath's Java Library Path
で,JVMOptionsをどうやって作ったらいいかわかりません

下記のページの最後「パスの設定は完了」ってところまでやったんですが..
http://techfun.cc/java/windows-jdk-pathset.html

関係ないソフトでてきてごめんなさい
2017/05/09(火) 12:49:33.75ID:zagaBJts
Win7 64bitです
2017/05/09(火) 16:18:51.10ID:iKf74YDS
>>293
なにがしたいのかわからん
そのソフト使いたいだけならexe形式のインストーラあるからそれ使えばええやん?
2017/05/09(火) 16:45:19.33ID:dAYvtASF
スッキリわかるjava入門でどこJavaじゃダメだからコマンドプロンプトっていうのを使ってくれって書いてあったんだけど、正直よくわからないからそのままnetbeansぇ続けても大丈夫?
2017/05/09(火) 18:01:00.16ID:xhqm65zv
そんなあなたにpaiza.io
2017/05/09(火) 18:28:25.96ID:zagaBJts
>>295
説明不足でごめんなさい
この2つのソフト(コマーシャルのMATLABとオープンのQuPath)はどちらも独立して使えてはいるんですが,片方のソフトからもう片方のソフトを呼び出せる機能があってそのことが書いてあるのが最初に添付したリンクです.
QuPath内にあるQuPath.cfgをJVMOptionに移動させるのが最初のステップなのですがそのJVMOptionが作りかたがわからないのです.
2017/05/09(火) 18:42:38.34ID:wOo51I5g
大丈夫大丈夫
これからも正直よく分からないところはどんどん飛ばしていけ
そうすれば正直よく分からないところで悩む必要無くなるから
2017/05/09(火) 19:45:49.93ID:41He4fJz
>>298
そもそもそのページがMATLAB → QuPath(op #1)とQuPath → MATLAB(op #2)の両方書かれてるのは理解してるよな?
op #1はMATLAB側の環境を整えてる
同#2はQuPath側だな

んで問題の箇所は簡単に済ませるならjava.library.pathをQuPath.cfgの中に記述しろって書いてるだろ?
実際のファイル見てないからわからんが、テキストエディタで見れば最低でも[JVMOptions]の行はあるだろうから、その下に追記してやればいい
例で書かれてるのはMAC版みたいだから自分の環境に合わせて書き換えろよ
2017/05/09(火) 20:00:45.39ID:dAYvtASF
public class 素数判定 {
public static void main(String[]args)
{
int sum=0;
int a =new java.util.Scanner(System.in).nextInt();
System.out.print(a+"=");
int m=a;
boolean test=false;
for(int i=2;i<=a;i++){
if(a%i==0){
if(m!=a){
test =true;}
while(a%i==0){
a=a/i;
sum++;
}
if (sum!=1){
System.out.print(i+"^"+sum+"・");}
else{
System.out.print(i+"・"); }
sum=0;}
}
if (test==false){
System.out.println("\n"+m+"は素数です!");
}}}

書いてみたのだがすっきりしない
式の最後によけいな「・」が出てしまうし、iのループ中で一回でもtrueが出ればそのあとは判定しなくていいわけだし
改良点があれば教えてほしい
2017/05/09(火) 20:18:00.56ID:smTpNxH0
インデントおかしいし変数名分かりづらいし
2017/05/09(火) 20:28:39.39ID:/JePIrk9
>>301
trueになった時点でbreakしたら素因数分解できないでしょ
2017/05/09(火) 20:32:53.06ID:dAYvtASF
>>303
そう
だからtrueを判定する適切な場所がどこだかわからない
2017/05/09(火) 20:42:22.15ID:60ZWnyEc
100が素数かどうか調べる時は√100まで
つまり2〜10でええんやで
2017/05/09(火) 20:45:33.38ID:dAYvtASF
>>305
ルートを出してその整数部分だけ使えばいいのか
そういうの出来たっけ?
2017/05/09(火) 20:51:57.55ID:SmlWSda1
Math.sqrtの結果をintキャスト
2017/05/09(火) 20:55:23.79ID:dAYvtASF
>>307
なるほど!ありがとう
309デフォルトの名無しさん
垢版 |
2017/05/09(火) 22:29:03.24ID:ivwxgVxg
>>301
「・」は出すように書いてあるからその通りに出てくるだけ
310デフォルトの名無しさん
垢版 |
2017/05/10(水) 01:27:24.94ID:BYWHw2Iq
プログラミングっていうかゲーム作りって言ったらGUIとかアニメーションを使うのが一番に出て来ると思うんだけど、javaのコーディングでできるものなの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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