2012-02-15 9 views
3

をレンダリング。私は華氏とその逆に摂氏に変換するためのアプリケーションに取り組んでいるテーブル

アプリケーションは、フィールドとラジオボタンの含まれています。ユーザーは「開始温度」「終了温度」「反復子」を入力し、CからFまたはFからCへの変換を選択します。

ボタンをクリックすると、温度がCで表示され、変換されますFの温度(またはその逆)。私は、whileループなどのループのためにそれを行うことを試みたが、それは条として、それは動作しません。

私はそれが不要に複雑なソリューションであることを知っている、と私は実際に動作するよりエレガントなソリューションを作成して助けを理解すべきです。

 var i = 0; 

     while (startTemp < endTemp) { 
      i += 1; 

      TableRow tRow = new TableRow(); 
      tRow.CssClass = (i % 2 == 0 ? "white" : "grey"); 
      tempTable.Rows.Add(tRow); 

      startTemp = startTemp + iterator; 
      if (startTemp < endTemp) { 
       for (int j = 0; j <= 1; j++) { 
        TableCell tCell = new TableCell(); 
        if ((j % 2) == 0) { 
         tCell.Text = startTemp.ToString(); 
        } 
        else { 
         if (tempType1 == "°C") { 
          convertedTemp = TemperatureConverter.CelsiusToFahrenheit(startTemp); 
         } 
         else { 
          convertedTemp = TemperatureConverter.FahrenheitToCelsius(startTemp); 
         } 
         tCell.Text = convertedTemp.ToString(); 
        } 
        tRow.Cells.Add(tCell); 
       } 
      } 

募集出力(イテレータ= 2):

C -------------------- F

39   102 
41   105 
43   109 
45   113 
47   116 
49   120 

EDIT: 1つのことを除いて、ソリューションは正常に動作します。開始温度として1を、終了温度として10を、イテレータとして1を使用すると、9で停止します(10ではありません)。あなたはそれを持って

答えて

3

をバインドするあなたのソリューションは良いのですが、私はあなたが9の操作を行い、あなたのwhileループの初めに ためにのみ1ループ

TableRow tRow 
TableCell tCell 
for(int i = startTemp; i < endTemp; i += iterator) 
{ 
tRow = new TableRow(); 
tRow.CssClass = (i % 2 == 0 ? "white" : "grey"); 
tempTable.Rows.Add(tRow); 

tCell = new TableCell(); 
tCell.Text = i.ToString(); 
tRow.Cells.Add(tCell); 
tCell = new TableCell(); 

tCell.Text = convert(i); 

tRow.Cells.add(tCell); 
tempTable.Rows.Add(tRow); 

} 

あなたが9でストップするだろう+ = 1

ので、私はそれはあなたが(startTemp < = endTemp)の場合

を行うことができますが

を停止 (10 < 10)ならば、10 =

+0

どうもありがとう!あなたは解決策が本当に私よりもずっとエレガントで、それはうまくいきます、私が必要と同じ方法で変更する必要があることを受け入れます。 :) – holyredbeard

0

方法が悪いわけではありません。あなたは、代わりにデータを格納するクラスを使用することができます。

public class ConvertData 
{ 
    public decimal Celsius { get; set; } 

    public decimal Fahrenheit { get; set; } 
} 

は、最初のパスを取り、ConvertDataオブジェクトを作成し、コレクションに格納します。そして、リピータに収集、リストビューなど

関連する問題