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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

2193閲覧

C#です。foreach文の最後の値が出力されない。

pro-poke5

総合スコア46

C#

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/08/17 07:18

編集2016/08/17 07:20

こんにちわ
プログラム初心者です
C#でHTMLファイルを作っています(VS2010)

データベースからとってきた値をswich文で判断し記号で表示させ表にしたいです
下のコードを実行するとなぜか1番最後の列になるはずのname(area_name)が出力されません
if文がおかしいのか、foreach文のループをぬける条件がおかしいのかわかりません

アドバイスいただけますとうれしいです
よろしくお願いいたします。

C#

1if (ds.Tables[tblname].Rows.Count > 0) 2 { 3 4 string oldCode = string.Empty; 5 string oldName = string.Empty; 6 7 string boufuusetsu = string.Empty; 8 string chakuhyo = string.Empty; 9 string chakusetsu = string.Empty; 10 11 sw.Write("<table border=1>"); 12 sw.Write("<tr><td> </td><td>暴風雪</td><td>着雪</td><td>着氷</td></tr>");//表のヘッダー 13 14 15 foreach (DataRow row in ds.Tables[tblname].Rows) 16 { 17 string code = row["area_cd"].ToString(); 18 string name = row["area_name"].ToString(); 19 20 21 22 if (code == oldCode || oldCode == string.Empty) 23 { 24 //空 25 26 } 27 else 28 { 29 sw.Write("<tr><td>" + oldName + "</td><td>" + boufuusetsu + "</td>"); 30 sw.Write("<td>" + chakuhyo + "</td>"); 31 sw.Write("<td>" + chakusetsu + "</td></tr>"); 32 33 boufuusetsu = string.Empty; 34 chakuhyo = string.Empty; 35 chakusetsu = string.Empty; 36 37 } 38 39 string alrt = row["alert"].ToString();//番号 40 string alrtcode = row["alert_status_code"].ToString();//発表とか 41 string alrtname = row["alert_short_name"].ToString();//雷、暴風とか 42 43 string mark = string.Empty; 44 45 switch(alrtcode) 46 { 47 case "0"://発表 48 switch(alrt){ 49 case "32": 50 case "38": 51 mark = "◆"; 52 //sw.Write("◆");//特別警報 53 break; 54 case "02": 55 case "03": 56 57 case "08": 58 mark = "●";//警報 59 break; 60 case "13": 61 case "10": 62 case "18": 63 case "15": 64 65 mark = "▲";//注意報 66 break; 67 } 68 break; 69 70 case "1"://警報から注意報 71 sw.Write("▽"); 72 break; 73 74 case "2"://継続 75 switch(alrt){ 76 case "32": 77 case "33": 78 79 mark = "◇";//特別警報 80 break; 81 case "02": 82 case "03": 83 84 mark = "○";//特別警報 85 break; 86 case "13": 87 case "10": 88 case "18": 89 90 mark = "△";//注意報 91 break; 92 } 93 break; 94 95 case "3"://解除 96 mark = "×"; 97 break; 98 99 } 100 101 switch(alrtname) 102 { 103 case "暴風雪": 104 case "風雪": 105 boufuusetsu = mark; 106 break; 107 108 109 110 case "暴風": 111 case "強風": 112 bouhuu = mark; 113 break; 114 case "着氷": 115 chakuhyo = mark; 116 break; 117 case "着雪": 118 chakusetsu = mark; 119 break; 120 } 121 oldCode = code; 122 oldName = name; 123 124 125 } 126 127 } 128 129 sw.Close();

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

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

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

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

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

guest

回答2

0

ベストアンサー

とても簡単な問題です。
daiveさんも書いていますが、デバッガを使えば一瞬で解決してしまうようなミスがあります。

さぁ、がんばってトレースしてみましょう!

投稿2016/08/17 19:02

mugicya

総合スコア1046

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

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

0

1.プロジェクトの種類、.NetFramework のバージョンも掲示するようにして下さい。
2.この際ですから、プログラムのデバッグ方法を学習してください。
VS2010 C# デバッグ などで検索可能です。
3.コードは考えた様には動きません、書かれた様に動きます、
それを確認したりするのが、デバッガの役目です。
デバッグが出来る様になる事が、上達への必須の階梯です。

投稿2016/08/17 07:29

daive

総合スコア2028

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問