一个题目:在asp.net中从HTTP页面输入一组数字经冒泡排序后显示到页面。本人刚接触.net,对输入输出不是太清楚。代码如下;但是编译后会出现异常,不晓得怎么解决,请高手指点,修改以下代码。
代码:
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.TextBox TextBox2;
protected System.Web.UI.WebControls.TextBox TextBox3;
protected System.Web.UI.WebControls.TextBox TextBox4;
protected System.Web.UI.WebControls.TextBox TextBox5;
protected System.Web.UI.WebControls.TextBox TextBox6;
protected System.Web.UI.WebControls.TextBox TextBox7;
protected System.Web.UI.WebControls.TextBox TextBox8;
protected System.Web.UI.WebControls.TextBox TextBox9;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.TextBox TextBox10;

private void Page_Load(object sender, System.EventArgs e)
{
    int[] a=new int[10];
string[] text=new string[]{"TextBox1.Text","TextBox2.Text","TextBox3.Text","TextBox4.Text","TextBox5.Text","TextBox6.Text","TextBox7.Text","TextBox8.Text","TextBox9.Text","TextBox10.Text"};
for(int i=0;i<10;i++)//从页面中读取10个数
{
a[i]=Convert.ToInt32(text[i]);//.net显示这里出错了
}
    int temp;//临时变量
bool exchange;
for(int j=0;j<9;j++)
{
exchange = false;
for(int i=0;i<9-j;i++)//循环检查数组中相邻元素的大小
{
if(a[i]>a[i+1])
{
temp=a[i];//交换元素
a[i]=a[i+1];
a[i+1]=temp;
exchange = true;
}
}
if(!exchange)
{
break;    
}
}
Response.Write("排序后的结果是:");
for(int i=0;i<10;i++)//显示排序后的结果
{
string b=a[i].ToString();
Response.Write("b,");
}
}
}
             }

错误信息如下:
输入字符串的格式不正确。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.FormatException: 输入字符串的格式不正确。源错误: 
行 38:  a[i]=Convert.ToInt32(text[i]); 源文件: c:\inetpub\wwwroot\myproject1\冒泡排序.aspx.cs    行: 38 堆栈跟踪: 
[FormatException: 输入字符串的格式不正确。]
   System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +0
   System.Convert.ToInt32(String value) +47
   MyProject1.WebForm1.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\myproject1\冒泡排序.aspx.cs:38
   System.Web.UI.Control.OnLoad(EventArgs e)
   System.Web.UI.Control.LoadRecursive()
   System.Web.UI.Page.ProcessRequestMain() 

解决方案 »

  1.   

    你的 数组里面放的是字符串"TextBox1.Text" 而不是你输入的值 转换成数字当然会出错你先Response.Write(text[0])出来看看你要转换的是什么啊
      

  2.   

    你现在执行的实际上是 Convert.ToInt32("TextBox1.Text");而不是Convert.ToInt32(TextBox1.Text)你可以用Page.FindControl(text[i])
    string[] text=new string[]{"TextBox1","TextBox2","TextBox3","TextBox4","TextBox5","TextBox6","TextBox7","TextBox8","TextBox9","TextBox10"};
    for(int i=0;i<10;i++)//从页面中读取10个数
    {
    a[i]=Convert.ToInt32(((TextBox)Page.FindControl(text[i])).Text);//.net显示这里出错了
    }
      

  3.   

    Convert.ToInt32("TextBox1.Text");而不是Convert.ToInt32(TextBox1.Text)
    就是说你把"TextBox1.Text"字符串转化成整型是不可能的