質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

4回答

3032閲覧

C# string型Listの入力中断判定

ffmkx925

総合スコア16

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2019/01/23 02:02

編集2019/01/23 03:01

前提・実現したいこと

C#言語でstring型のListについての質問です。
コンソールから文字列を入力させ続け、何も入力せずEnterを押すと、それまで入力した文字列のが全て表示されるプログラムを作りなさい。このとき文字列は、Listで作った可変長配列に格納すること。
上記のような問題があるのですが、入力終了の判定がうまくいきません。
アドバイスお願いします。

発生している問題・エラーメッセージ

enterだけを押してもループを抜けません。

該当のソースコード

C#言語

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace probex6_4
{
class Program
{
static void Main(string[] args)
{
List<string> s = new List<string>();
int c = 0;
while (true)
{
Console.Write("文字列を入力:");
s.Add(Console.ReadLine());
if (s[c]=="")//ここがわかりません
{
break;
}
c++;
}
Console.WriteLine();
foreach(string i in s)
{
Console.Write(i + " ");
}
Console.WriteLine();
}
}
}

試したこと

if文での判定を"exit"などの文字列にしてみましたが、エラーが出てきます。
エラー内容
System.Collections.Generic.List1[System.String] System.Collections.Generic.List 1[System.String]

補足情報(FW/ツールのバージョンなど)

環境はvisualstadio2017です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2019/01/23 02:10

うまくいかないとはどうなるのか、エラーになるのであればどのようなメッセージが出るのか明記してください
ffmkx925

2019/01/23 02:45

上記コードだたループから出られません。 if分の条件判定を”exit”などの文字列にすると System.Collections.Generic.List`1[System.String] System.Collections.Generic.List `1[System.String] System.Collections.Generic.List`1[System.String] というエラーが出てきて、表示の部分が実行されません。
papinianus

2019/01/23 03:24

そういう表示をするには、Console.Write(s)という記載をする必要があります。コーディングの初期にそうなっていたかもしれませんが、今のコードではそういう表示は起こらないはずです(またこれはエラーではなくリストをforeachせずにコンソールに出そうとした結果です)。
guest

回答4

0

なにも入力しなくてEnterだけ押したときのConsole.ReadLine()の戻り値になにが帰ってきてるかを調べてみましょう
その帰ってきたものを比較対象にすればいいです

投稿2019/01/23 02:09

編集2019/01/23 02:10
y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ffmkx925

2019/01/23 03:57

参考にさせていただきます。
guest

0

ループから抜け出せない部分は一度変数に代入することで解決しました。
エラーメッセージの部分はif判定のところではなくforeachの部分の記述ミスでした。

投稿2019/01/23 04:01

ffmkx925

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

(改訂しました)

オンライン実行環境でのテストですが、特に問題なく実行できました。
(ただし、最後にスペースが2つ表れます。これは空文字であっても値が格納されるからだと思います)

投稿2019/01/23 02:21

編集2019/01/23 03:22
papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ffmkx925

2019/01/23 03:56

解決しました。 ありがとうございます。
guest

0

if文で、ループを抜ける条件がわかってるなら、

それをWhile条件にしませんか?

投稿2019/01/23 02:18

283cks

総合スコア138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ffmkx925

2019/01/23 03:57

それもそうですね。 今後の参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問