この人頭いいなと思ったエピソード

(質問)
(1)コマンドラインというのがわかりません。
(2)下の説明のところが全部わかりません。
よろしくおねがいします!!
--------------------------------------------------
(説明)

ファイルを処理するとき、ファイル名指定はコマンドラインから行うのが便利です。Javaではコマンドライン引数はmain( )メソッドの引数として次のように用意されています。

public static void main (String args[ ]) {
・・・・・
}

このargs引数を使うと、コマンドラインから入力されたパラメーターを次のように取得できます。
最初のパラメーター文字列は0です。

args.length
args[0]
args[1]
args [2]
 ・
 ・
 ・

A 回答 (4件)

#2のbakatonoです.長くなります.すみません.



>すいませんここをもう一度お聞きしたいのですがfile1 file2は
>ファイルそのものじゃなくて文字列とはどういうことですか?

そのままの意味ですよ.

実行するコマンド(プログラム名)のあとに,スペースで区切って入れた
文字列が全て「コマンドライン引数」です.スペースで区切って複数書くと,
前から順番にプログラムに渡され,args[]にそのままの順番で入ります.

>a bとかだったら文字列になるのはわかるんですが、file1 file2って
>ファイルですよね?それが文字列になるというのがわかりません。
>ファイル自体が引数として渡されないんですか?

コマンドライン引数は基本的に文字列として渡します.なぜならそれが一番都合がいいからです.
コマンド(プログラム)は,ファイルをいじくるだけのものとは限りませんよね?
「文字列をごにょごにょする」ものもあるでしょうし,「数値をがちゃがちゃする」
ものもあるでしょう.

私が前に挙げた例(例1とします)は,hoge.exeが「二つのファイルをもにょもにょする」
というプログラムだった場合の例といえます.
この場合,渡されたファイル名の文字列を使って,プログラム内で該当するファイル
をオープンして,それらのファイルをもにょもにょ処理することになります.

例2)
文字列を2つ渡して,一つ目の文字列の中に二つ目の文字列がいくつ含まれるかを
数えるプログラム「gonyo.exe」の場合
c:\>gonyo.exe hogehogeauau au ←コマンド(プログラム)とコマンドライン引数
c:\>2             ←実行結果
hogehogeauauが第1引数,auが第2引数で.プログラム内部でごにょごにょ数えたら
hogehogeauauという文字列の中にauという文字列が2回含まれてました.
こんなプログラムを組みたい場合,渡したいのは文字列そのものですよね?

また
例3)
数字を2つ渡して,一つ目の数字と二つ目の数字の合計を求めるプログラム
「keisan.exe」の場合
c:\>keisan.exe 3 5 ←コマンドとコマンドライン引数
c:\>8        ←実行結果
こんなプログラムの場合,渡したいのは数字ですが,文字列として渡して,
プログラムの内部で文字列→数値変換してガチャガチャ計算すればいいのです.

さらにいうと,上記例の混在するケースも考えられます.ファイル名と数字を与えて,
そのファイルを数字の数だけ分割するプログラム...とか,いくらでもあります.

ね?とりあえず文字列で渡すのが一番都合がいいでしょう?
プログラム内部で好きなように使う.これでどんなパターンにも柔軟に対応できます.

==蛇足==
こういうのを,「汎用性(が高い)」と言い,プログラミングではとても重要なことの
ひとつであることを覚えておきましょう.がんばって勉強してくださいね^^
    • good
    • 0
この回答へのお礼

bakatonoさんお返事ありがとうございます!

>長くなります.すみません.

いえいえ僕のためにとても詳しく解説してくださってとても感謝しております!頭がさがりっぱなしです。とても参考になりました。

今まで文字列というのが出てくるたびになぜいちいち文字列にするんだろうと不思議に思っていますたがbakatonoさんの解説を聞いて疑問が解決できました!そういうことだったんですね。

今回はどうもありがとうございました!!まだ始めたばっかりですがもっとJavaを勉強してbakatonoさんみたいになれるようにがんばりたいと思います。

お礼日時:2003/11/29 13:48

>DOSPROMPT(DOS画面で通常>)の出ている行(コマンドライン)にプログラム名(MS-DOSプログラムならEXE形式のファイル名)を入れると、プログラムがOSにより呼び出されて実行権がそちらに与えられ実行されるが、プログラム名を入れる行のその続きにスペースを区切りにして、パラメータや引数(Arguments->Args)を入力するとプログラムの中で使えますよと言うこと。


そして1つに限らず、コマンドラインの制限文字数まで
複数個続けられます。
この例ではString args[]ですから、文字列を入れてください(入れたものは文字列として解釈されますよ)。そしてそれらは、配列に入れられて、1つ目はargs[0]で、2番目はargs[1]で、・・・参照して、その内容(文字列)をプログラムの中で使えますよ。
文字列の長さはargs[0].lengthでわかりますよ。
ということだと思います。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます!
素晴らしい回答どうもありがとうございます。
ずっと考えてた疑問を解決することが出来てうれしいです。これでJavaの勉強をまた進められそうです。
どうもありがとうございました!

お礼日時:2003/11/29 01:21

そっか...最近の人ははじめて触るPCにwindowsとか入ってるからコマンドラインがわかんないのね...



コマンドラインの基本的なこと↓
http://www.atmarkit.co.jp/fwin2k/operation/comma …

コマンドライン引数については,私はJavaはよくわからんので基本概念だけの解説となりますが...

例えばあなたが「hoge.exe」というプログラムを起動するときに,DOSプロンプトで

c:\>hoge.exe file1 file2

とか打ち込んで起動すると,"flle1"と"file2"という文字列が「コマンドライン引数」としてhoge.exeに渡される.一方,渡されたhoge.exeの中では,配列args[]の中に順番に,
args[0]="file1"
args[1]="file2"
,...てな感じで格納されてますよ.ってことです.

上記例は文法とかは気にしないでください.Javaわからないので.概念だけ汲み取ってくださいね.
    • good
    • 0
この回答へのお礼

お返事ありがとうございます!
コマンドラインのことが大変よくわかりました。

>c:\>hoge.exe file1 file2
>とか打ち込んで起動すると,"flle1"と"file2"という文>字列が「コマンドライン引数」としてhoge.exeに渡され>る.

すいませんここをもう一度お聞きしたいのですがfile1 file2はファイルそのものじゃなくて文字列とはどういうことですか?a bとかだったら文字列になるのはわかるんですが、file1 file2ってファイルですよね?それが文字列になるというのがわかりません。ファイル自体が引数として渡されないんですか?

お礼日時:2003/11/29 01:11

ウインドウズではMS-DOSのことと考えればいいでしょう。


CUI(キャラクターユーザーインターフェイス)のことですよ。
ひきすうというのは関数に与える変数のことです。
y=ax+bのxですね。
publicはアドレス空間がプログラム全体で有効ということ、staticは定数ということ、voidは戻り値がないということ、mainはプログラムのメインの関数ということです。
[]は配列ということですね。
では。
    • good
    • 0
この回答へのお礼

お返事ありがとうございました!
なるほどコマンドラインはMS-DOSのことだったんですね。どうもありがとうございました。他の質問にもお答えしてくださって感謝しております。

お礼日時:2003/11/29 00:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報