C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 質問)コマンドライン引数を使った加算・減算


(過去ログ 26 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■12238 / inTopicNo.1)  質問)コマンドライン引数を使った加算・減算
  
□投稿者/ Yosi (1回)-(2008/01/06(Sun) 00:40:18)

分類:[C#] 

開発環境:Microsoft Visual C# Basic 2005 Express Edition
使用言語:C#

初投稿です。


//基本的なソースPart19

using System;
using System.IO;

class sample19
{
static void Main(string[] args)
{
int value1;
int value2;
char kigou;

value1 = Int32.Parse(args[1]);
value2 = Int32.Parse(args[3]);
kigou = (args[2])[0];

int answer = 0;
switch (kigou)
{
case '-':
answer = value1 - value2;
break;
case '+':
answer = value1 + value2;
break;
}

Console.WriteLine("答えは"+answer+"です");


}
}

というソースで

value1 = Int32.Parse(args[1]);

の部分で「配列の境界外」という警告が出ました。
このソースはコマンドライン引数を使って
整数型の変数2つと文字型の変数1つで
それぞれ数字と+か-をいれることで計算がなされ
計算結果がanswerに格納されて
「答えはanswerです」と表示されればいいのですが

value1 = Int32.Parse(args[1]);

が原因(と思いますが)
「プログラムを指定して実行」を起動→引数をとって
実行したのですが一瞬だけしかコマンドラインが表示されないので
対処法を教えてください。
長々となりましたがヨロシクお願いします

引用返信 編集キー/
■12239 / inTopicNo.2)  Re[1]: 質問)コマンドライン引数を使った加算・減算
□投稿者/ いしだ (69回)-(2008/01/06(Sun) 00:52:55)
> value1 = Int32.Parse(args[1]);
args[0]ですね。
その他も同様に修正してください。

引用返信 編集キー/
■12240 / inTopicNo.3)  Re[2]: 質問)コマンドライン引数を使った加算・減算
□投稿者/ Yosi (2回)-(2008/01/06(Sun) 01:06:08)
No12239 (いしだ さん) に返信
>>value1 = Int32.Parse(args[1]);
> args[0]ですね。
> その他も同様に修正してください。
>

args[0]に戻したんですが
「インデックスが配列の境界外です」と表示されました
引用返信 編集キー/
■12241 / inTopicNo.4)  Re[1]: 質問)コマンドライン引数を使った加算・減算
□投稿者/ Azulean (1回)-(2008/01/06(Sun) 01:08:46)
コード上で対処すべきこと
・argsは0番目から参照して下さい

コード上で対処した方が良いこと
・args[0]を参照する前にargs.Lengthを事前にチェックする(3個以上引数がなければ、コマンドライン引数が不正ですとエラーにする等)
・Int32.Parseではなく、Int32.TryParseを使う(数値以外が入力されたときに落ちないようにする)

> の部分で「配列の境界外」という警告が出ました。
どうした時にその例外が表示されたのですか?(警告ではありません)
F5キーやCtrl+F5キーで起動したときですか?

デバッグ時にコマンドライン引数を指定したいときは、プロジェクトのプロパティのデバッグタブから設定できます。
ここで何も設定しなかったときはコマンドライン引数がありませんので、要素数0の配列の1番目を参照しているので例外となるのは当然といえます。

> が原因(と思いますが)
> 「プログラムを指定して実行」を起動→引数をとって
> 実行したのですが一瞬だけしかコマンドラインが表示されないので
> 対処法を教えてください。
デバッグ時は前述の方法で対処してください。
リリース時はスタート→すべてのプログラム→アクセサリ→コマンドプロンプトを開き、C:\(省略)\ConsoleApllication1.exe 12 + 32といったコマンドを打ち込んでください。
引用返信 編集キー/
■12242 / inTopicNo.5)  Re[3]: 質問)コマンドライン引数を使った加算・減算
□投稿者/ いしだ (70回)-(2008/01/06(Sun) 01:08:54)
> > args[0]に戻したんですが
> 「インデックスが配列の境界外です」と表示されました
全てなおしましたか?


value1 = Int32.Parse(args[1]);
value2 = Int32.Parse(args[3]);
kigou = (args[2])[0];


value1 = Int32.Parse(args[0]);
value2 = Int32.Parse(args[2]);
kigou = (args[1])[0];

コマンドライン引数はたとえば、
1 + 2
って感じですよね?

引用返信 編集キー/
■12243 / inTopicNo.6)  Re[2]: 質問)コマンドライン引数を使った加算・減算
□投稿者/ Azulean (2回)-(2008/01/06(Sun) 01:10:23)
> リリース時はスタート→すべてのプログラム→アクセサリ→コマンドプロンプトを開き、C:\(省略)\ConsoleApllication1.exe 12 + 32といったコマンドを打ち込んでください。
「リリース時」は「Visual C#を使わずに確かめるとき」に訂正しておきます。
引用返信 編集キー/
■12244 / inTopicNo.7)  Re[4]: 質問)コマンドライン引数を使った加算・減算
□投稿者/ Yosi (3回)-(2008/01/06(Sun) 01:12:34)
No12242 (いしだ さん) に返信
> コマンドライン引数はたとえば、
> 1 + 2
> って感じですよね?
>

さっきのargs[0]のところは
全部修正しなおしました。

そうですね、「数字 +か- 数字」と
いうやつです
引用返信 編集キー/
■12245 / inTopicNo.8)  Re[5]: 質問)コマンドライン引数を使った加算・減算
□投稿者/ επιστημη (765回)-(2008/01/06(Sun) 01:19:11)
επιστημη さんの Web サイト
空白で区切らずに

sample19 1+2

とか入力したんじゃなくて?

引用返信 編集キー/
■12246 / inTopicNo.9)  Re[5]: 質問)コマンドライン引数を使った加算・減算
□投稿者/ いしだ (71回)-(2008/01/06(Sun) 01:20:02)
2008/01/06(Sun) 01:23:53 編集(投稿者)
以下のようにしてみて、コマンドライン引数がちゃんと設定
されているかみてみてはどうでしょう?

static void Main(string[] args)
{
    int value1;
    int value2;
    char kigou;

    Console.WriteLine("arg[0] = [" + args[0] + "]");
    Console.ReadLine();
    Console.WriteLine("arg[1] = [" + args[1] + "]");
    Console.ReadLine();
    Console.WriteLine("arg[2] = [" + args[2] + "]");
    Console.ReadLine();

    value1 = Int32.Parse(args[0]);
    value2 = Int32.Parse(args[2]);
    kigou = (args[1])[0];

    int answer = 0;
    switch (kigou)
    {
        case '-':
            answer = value1 - value2;
            break;
        case '+':
            answer = value1 + value2;
            break;
    }

    Console.WriteLine("答えは" + answer + "です");

    Console.ReadLine();
}

本当は、ブレークポイントを置いてみてみるのが一番だと思います。

引用返信 編集キー/
■12247 / inTopicNo.10)  Re[3]: 質問)コマンドライン引数を使った加算・減算
□投稿者/ Yosi (4回)-(2008/01/06(Sun) 01:24:15)
No12243 (Azulean さん) に返信
>>リリース時はスタート→すべてのプログラム→アクセサリ→コマンドプロンプトを開き、C:\(省略)\ConsoleApllication1.exe 12 + 32といったコマンドを打ち込んでください。
> 「リリース時」は「Visual C#を使わずに確かめるとき」に訂正しておきます。

みなさんありがとうございます。
参考にします
解決済み
引用返信 編集キー/
■12248 / inTopicNo.11)  Re[4]: 質問)コマンドライン引数を使った加算・減算
□投稿者/ Azulean (3回)-(2008/01/06(Sun) 01:41:26)
結果として次の点が問題だったのでしょうか?

・argsのインデックスの間違い
・コマンドライン引数の与え方が分からない or すぐにウィンドウが消えて確認ができない

Visual C#の環境からでもコマンドライン引数は与えられますので、この機会に試してみてください。

1.「プロジェクト」メニューから「(プロジェクト名)のプロパティ」を選択する
2.表示される画面の左側に「デバッグ」という項目があるので選択する
3.「コマンド ライン引数」というテキストボックスがあるので、ここにコマンドライン引数として与えたい文字列を入力する。
〜ここまでで設定〜
4.デバッグ開始(F5キーまたは右向きの緑色の三角ボタン)やデバッグなしで実行(Ctrl+F5キー)を行う
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -