2012-02-15 95 views
3

我正在研究一個將攝氏溫度轉換成華氏溫度的應用程序,反之亦然。渲染出一張桌子

該應用程序包含字段和單選按鈕。用戶填入「開始溫度」,「結束溫度」和「迭代器」並選擇從C到F或F到C的轉換。

點擊一個按鈕之後,表格會呈現C溫度,轉換F中的溫度(反之亦然)。我試圖用while循環和for循環來完成它,但它不能正常工作。

我知道這是一個不必要的複雜的解決方案,我真的應該明白幫助創建一個更優雅的解決方案,即工作。

 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):

Ç--------------------˚F

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

編輯:該解決方案工作正常,除了一件事。如果我使用1作爲開始溫度,10作爲結束溫度和1作爲迭代器,它停在9(不應該在10,因爲它應該),我只是不明白爲什麼。

回答

3

您的解決方案是好的,但我能做的只有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,因爲 在while循環的開頭你做9 + = 1

,所以我= 10,則如果(10 < 10) 所以它停在那裏

所以,如果你能做到(startTemp < = endTemp)

+0

非常感謝!你的解決方案確實比我的更優雅,並且工作得很好,接受它需要以我需要的方式改變。 :) – holyredbeard 2012-02-15 20:35:02

0

你擁有它的方式並不差。您也可以使用一個類來存儲數據:

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

    public decimal Fahrenheit { get; set; } 
} 

取第一遍並創建ConvertData對象,將它們存儲在集合中。然後,收集綁定到一箇中繼器,ListView控件等

相關問題