【提问】程序逻辑处理问题

xupeihuagudulei3 2010-05-27 09:10:11
for (int i = 0; i < 10; i++)
{
if (i == 5)
{

}
else
{
Label1.Text = "false";
break;
}
}

Label1.Text = "5";
}

上面这段代码。
我是想这样的。当进入else块的时候。label1.text这就不能被执行了。
label1.text只能是进入if块的时候执行。但是不能把它放进if块里。
想知道这该咋解决啊?
想半天想不过来。
...全文
435 79 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
79 条回复
切换为时间正序
请发表友善的回复…
发表回复
皇城龙三 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 76 楼 xupeihuagudulei3 的回复:]
呵呵,终于搞好啦。
真辛苦大家。
[/Quote]

呵呵。不容易啊,可以睡个安稳觉了。
xupeihuagudulei3 2010-05-28
  • 打赏
  • 举报
回复
呵呵,终于搞好啦。
真辛苦大家。
xupeihuagudulei3 2010-05-28
  • 打赏
  • 举报
回复
哎,还是再写个小例子测试下。需要不需要再手动I++
皇城龙三 2010-05-28
  • 打赏
  • 举报
回复
恩,这样可以,看错位了,呵呵
xupeihuagudulei3 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 69 楼 koukoujiayi 的回复:]

还没搞定?
[/Quote]呵呵,多谢关心。应该算搞定了。
xupeihuagudulei3 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 70 楼 ly302 的回复:]

或者
C# code

if(String.isNullOrEmpty(arr[i].ToString()))
{
arr[i] = "";
i++;//把这个第i个,跳到下一个
……
[/Quote]我觉得应该不用跳了吧。
执行完arr[i]="";赋值之后
应该就会走到for语句的花括号了。
然后自然会跳到上面的for(I++)上面吧。
xupeihuagudulei3 2010-05-28
  • 打赏
  • 举报
回复
我觉得不会了啊。这样。
你再看下仔细

for (int i = 0; i < arr.Count; i++)
{
if(String.isNullOrEmpty(arr[i].ToString()))
{
arr[i] = "";
}
else
{
if (DateTime.TryParse(arr[i].ToString(), out result))
{
//这里就是处理显示格式了。
arr[i] = result.Hour > 12 ? result.ToString("yyyy MM dd hh mm ss P\"M\"") : result.ToString("yyyy MM dd hh mm ss A\"M\"");
}
else
{
//这里就是前面datatime.tryparse转换不成功的时候。也就是说arraylist里//面的数据全是为"0.55353"这类小数形式的。所以不需要处理直接放进hashtable里key所对应的value.
workbook.DataSource[key] = val;
break;
}
}


}

皇城龙三 2010-05-28
  • 打赏
  • 举报
回复
或者

if(String.isNullOrEmpty(arr[i].ToString()))
{
arr[i] = "";
i++;//把这个第i个,跳到下一个
}
koukoujiayi 2010-05-28
  • 打赏
  • 举报
回复
还没搞定?
皇城龙三 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 67 楼 xupeihuagudulei3 的回复:]
改成这样行不行

C# code

for (int i = 0; i < arr.Count; i++)
{
if(String.isNullOrEmpty(arr[i].ToString()))
{
……
[/Quote]

这样不行的,一样会跳出的

如果arr[i] = "";那么后面的if还会跳出,因为不符合时间格式

空值需要先处理
xupeihuagudulei3 2010-05-28
  • 打赏
  • 举报
回复
改成这样行不行

for (int i = 0; i < arr.Count; i++)
{
if(String.isNullOrEmpty(arr[i].ToString()))
{
arr[i] = "";
}
else{
if (DateTime.TryParse(arr[i].ToString(), out result))
{
//这里就是处理显示格式了。
arr[i] = result.Hour > 12 ? result.ToString("yyyy MM dd hh mm ss P\"M\"") : result.ToString("yyyy MM dd hh mm ss A\"M\"");
}
else
{
//这里就是前面datatime.tryparse转换不成功的时候。也就是说arraylist里//面的数据全是为"0.55353"这类小数形式的。所以不需要处理直接放进hashtable里key所对应的value.
workbook.DataSource[key] = val;
break;
}
}


}

皇城龙三 2010-05-28
  • 打赏
  • 举报
回复
那应该先把空值过滤掉

否则只要有空值就会跳到
workbook.DataSource[key] = val;
xupeihuagudulei3 2010-05-28
  • 打赏
  • 举报
回复
空值的话就反空值赋值给arr
xupeihuagudulei3 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 63 楼 ly302 的回复:]

引用 58 楼 xupeihuagudulei3 的回复:
引用 56 楼 ly302 的回复:

引用 52 楼 xupeihuagudulei 的回复:
引用 51 楼 ly302 的回复:

如果是空值的话岂不是也要else?
是啊。所以说不能随便拿一个来判断的
看样子只能用加flag来判断。
PS:刚不小心按了关机键。晕


那是不是可以这么理解,这个集合里面要么……
[/Quote]恩,我知道。那这样该咋整?
皇城龙三 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 58 楼 xupeihuagudulei3 的回复:]
引用 56 楼 ly302 的回复:

引用 52 楼 xupeihuagudulei 的回复:
引用 51 楼 ly302 的回复:

如果是空值的话岂不是也要else?
是啊。所以说不能随便拿一个来判断的
看样子只能用加flag来判断。
PS:刚不小心按了关机键。晕


那是不是可以这么理解,这个集合里面要么就是全空值,要么就全时间,要么就全数字


如果这样的话,……
[/Quote]

因为if (DateTime.TryParse(arr[i].ToString(), out result))这个的判断应该是时间的

空值不是时间的,会转到else的
xupeihuagudulei3 2010-05-28
  • 打赏
  • 举报
回复
对了。要是空值的话现在的代码里没处理。
就算arr是时间格式的话。要是其中有一个为空的话直接跳到else里了。也就是说循环里所有处理时间的都白写了。最后还是从原来的val里赋值。看样子代码还得再改改。
yoursWTR 2010-05-28
  • 打赏
  • 举报
回复
arr[i] = DateTime.TryParse(arr[i].ToString(), out result)? (result.Hour > 12 ? result.ToString("yyyy MM dd hh mm ss P\"M\"") : result.ToString("yyyy MM dd hh mm ss A\"M\"")): null;

少个括号嘛

这个是按你的意思,你说的arr包含的要么全部时间,要么全部数字,
那么,for里面循环arr满足则转换,不满足则给予NULL
最后检查第一个arr[0]是值是否为空来给workbook.DataSource[key]赋值
xupeihuagudulei3 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 57 楼 yourswtr 的回复:]

C# code

for (int i = 0; i < arr.Count; i++)
arr[i] = DateTime.TryParse(arr[i].ToString(), out result)? result.Hour > 12 ? result.ToString("yyyy MM dd hh mm ss P\"M\"") : result.ToString("yyyy MM dd……
[/Quote]感觉这样写不对
xupeihuagudulei3 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 57 楼 yourswtr 的回复:]

C# code

for (int i = 0; i < arr.Count; i++)
arr[i] = DateTime.TryParse(arr[i].ToString(), out result)? result.Hour > 12 ? result.ToString("yyyy MM dd hh mm ss P\"M\"") : result.ToString("yyyy MM dd……
[/Quote]这个写得。我都看不懂。头一次知道三元还可以多次放一起使用
xupeihuagudulei3 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 56 楼 ly302 的回复:]

引用 52 楼 xupeihuagudulei 的回复:
引用 51 楼 ly302 的回复:

如果是空值的话岂不是也要else?
是啊。所以说不能随便拿一个来判断的
看样子只能用加flag来判断。
PS:刚不小心按了关机键。晕


那是不是可以这么理解,这个集合里面要么就是全空值,要么就全时间,要么就全数字


如果这样的话,也可以随便抽取一个

因为空值和数字都……
[/Quote]啊,不是吧。
我觉得最有可能就是要么是数字和空值混合体,要么时间和空值混合体。
这样的话,程序会跳出?
加载更多回复(59)

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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