在C#中如何将字符串类型转换为整形,例如

qinchaohan 2010-03-31 09:17:12
int nn;
string nu = r[0].ToString().Trim();
/*try
{
nn = Convert.ToInt32(nu);
}
catch (System.FormatException)
{
MessageBox.Show("有异常要处理!");
}*/

// nn = Int32.Parse(nu);
nn = Convert.ToInt32(nu);此句提示:未处理FormatException.(若捕捉异常(如/**/里的部分),会提示nn未赋值,也就是相当于try里的语句未执行,故我将try catch部分去掉了。)
nn = nn + 1;
nu = nn.ToString().Trim();
textBox1.Text = nu;
...全文
1071 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2010-03-31
  • 打赏
  • 举报
回复
。。。
Error number format你没发现哪来的么?就是自己提示的,你r是什么?DataRow么?保存的是什么,如果不是数字你怎么转,我们能帮助你的是让程序容错性更高,更合理,你数据怎样要你自己保证啊。总不能我们给你数据都做了吧。

private void button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Rows.Add("1");
dt.Rows.Add("2");
dt.Rows.Add("3");
DataRow r = dt.Rows[0];
int nn;
if (!int.TryParse(r[0].ToString().Trim(), out nn))
{
MessageBox.Show("Error number format.");
return;
}
textBox1.Text = (nn + 1).ToString();
}

通过测试,是正确的,如果你保存的不是数字就自己修改吧。请你自己动动脑子,否则我负责的告诉你,不适合做开发。趁早转行。
qinchaohan 2010-03-31
  • 打赏
  • 举报
回复
换成以下代码后:
int nn;
if(!int.TryParse(r[0].ToString().Trim(),out nn))
{
MessageBox.Show("Error number format.");
return;
}
textBox1.Text = (nn + 1).ToString();
输出提示Error number format,即TryParse没能转型。我该怎么改?
baifucn 2010-03-31
  • 打赏
  • 举报
回复
为了 赚分 每天飘过。。。。
baifucn 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 baifuboke 的回复:]
引用 8 楼 hujinn 的回复:
[Quote=引用 2 楼 wuyazhe 的回复:]
C# code
int nn;
if(!int.TryParse(r[0].ToString().Trim(),out nn))
{
MessageBox.Show("Error number format.");
return;
}
textBox1.Text = (++nn).ToS……
[/Quote]

是啊

正解

正解。。。

呵呵...
乱世狂刀 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hujinn 的回复:]
[Quote=引用 2 楼 wuyazhe 的回复:]
C# code
int nn;
if(!int.TryParse(r[0].ToString().Trim(),out nn))
{
MessageBox.Show("Error number format.");
return;
}
textBox1.Text = (++nn).ToString();

……
[/Quote]
是啊

正解。。。
hujinn 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyazhe 的回复:]
int nn;
if(!int.TryParse(r[0].ToString().Trim(),out nn))
{
MessageBox.Show("Error number format.");
return;
}
textBox1.Text = (++nn).ToString();


[/Quote]
正解。。。
wei_lee_king 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 qinchaohan 的回复:]
int nn;
string nu = r[0].ToString().Trim();
/*try
{
nn = Convert.ToInt32(nu);
}
catch (System.FormatException)
{
MessageBox.Show("有异常要处理!");
}*/

// nn = Int32.Parse(nu);
nn = Convert.ToIn……
[/Quote]


这个转换就可以了!
Peter200694013 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyazhe 的回复:]
如果你需要错误提示,加上就好了

C# code

int nn;
if(!int.TryParse(r[0].ToString().Trim(),out nn))
{
MessageBox.Show("Error number format.");
return;
}
textBox1.Text = (nn + 1).ToString();
[/Quote]
正解
operatezhang 2010-03-31
  • 打赏
  • 举报
回复
是啊TryParse可以转型的啦!
CsToD 2010-03-31
  • 打赏
  • 举报
回复
int nn=0;
string nu = r[0].ToString().Trim();
/*try
{
nn = Convert.ToInt32(nu);
}
catch (System.FormatException)
{
MessageBox.Show("有异常要处理!");
}*/

编译器认为try块可能有异常,导致nn=Convert.ToInt32(nu)不被执行
于是nn可能未被赋值

这跟:
int f()
{
bool flag=true;
if(flag)
return 0;
}
是一个道理,编译时不能确定if条件是否成立(虽然你一眼就看出是成立的),所以编译器认为return 语句不一定执行,从来发出:并非所有的代码路径都返回值的编译错误
马老虎 2010-03-31
  • 打赏
  • 举报
回复
楼上说的对 先用TryParse看看是否能转型,然后再转
兔子-顾问 2010-03-31
  • 打赏
  • 举报
回复
如果你需要错误提示,加上就好了

int nn;
if(!int.TryParse(r[0].ToString().Trim(),out nn))
{
MessageBox.Show("Error number format.");
return;
}
textBox1.Text = (nn + 1).ToString();
兔子-顾问 2010-03-31
  • 打赏
  • 举报
回复

int nn;
if(!int.TryParse(r[0].ToString().Trim(),out nn)) return;
textBox1.Text = (nn + 1).ToString();
ytc666 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyazhe 的回复:]

如果你需要错误提示,加上就好了
C# code

int nn;
if(!int.TryParse(r[0].ToString().Trim(),out nn))
{
MessageBox.Show("Error number format.");
return;
}
textBox1.Text = (nn + 1).ToString();
[/Quote]
。。。
俩定 2010-03-31
  • 打赏
  • 举报
回复
定义的时候可以用:
int? nn = null;

后面的做法楼上已经很清楚了,根据需要选择就好了
sdjnpro 2010-03-31
  • 打赏
  • 举报
回复
用 int.TryParse
dfa34fg 2010-03-31
  • 打赏
  • 举报
回复
C#中如何将 字符串转为 整型 http://www.phome.asia/forum/thread/23477.html



兔子-顾问 2010-03-31
  • 打赏
  • 举报
回复
我还是列出完整点的原码吧,以防像楼上的wuyazhe那样理解有误。

csdn提问的人都很拽,诶,
你自己输出一下看看 r[0].ToString()内容就明白了。既然你不想理解,只希望别人看你的
r[0].ToString(),就能知道你的r是什么类型,那我真是无法理解了。

1.你变量命名习惯很差,从变量上看不出类型或意义。
2.你提问的时候尽可能的隐藏了你的关键信息,导致别人无法理解,但你无法明白这一点。这个和个人的自我意识有关,也和年龄小有关。
3.在你提问后,别人的回复你看不懂的时候,你第一反应时对方回复的是错的,稍微用点脑子也该明白,“星星”回复帖子不表示水平,但表示态度和热心,肯定是经过反复测试无误的,如果结果不是你要的,肯定是你描述问题不清晰,你很自私的表现就是把责任推到回答问题的人身上,对方理解能力有问题,避免再有理解能力有问题的人回复跟帖,所以多回复几行代码。
4.不再跟帖了,热心有限,能力有限,沟通热心也有限。
qinchaohan 2010-03-31
  • 打赏
  • 举报
回复
最后那个"}"是我不小心加上的。
textBox1.Text =mmm.ToString() ;
以下还有代码,不过跟我要找的错误没关系,故未列出。
qinchaohan 2010-03-31
  • 打赏
  • 举报
回复
楼上的wuyazhe你没看清我写的吗?
换成以下代码后:
int nn;
if(!int.TryParse(r[0].ToString().Trim(),out nn))
{
MessageBox.Show("Error number format.");
return;
}
textBox1.Text = (nn + 1).ToString();
输出提示Error number format,即TryParse没能转型,也就是int型没能转换为string,textBox1.Text中什么都没显示。(r[0].ToString()存的是数字)。
我还是列出完整点的原码吧,以防像楼上的wuyazhe那样理解有误。
SqlCommand cmd = new SqlCommand("select max(t_id) from titles ", conn);
SqlDataReader r = cmd.ExecuteReader();
if (r.Read())
{
string nu = r[0].ToString().Trim();
int nn;
// nn = Int32.Parse(nu);
nn = Convert.ToInt32(nu);
nn = nn + 1;
nu = nn.ToString().Trim();

textBox1.Text = nu;

r.Close();
conn.Close();
}
else
{
int mmm = 500;

textBox1.Text =mmm.ToString() ;
}

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧