关于foreach 语句

hujiechong 2016-12-03 09:08:55
string s = "";

for (int i = 0; i <int .Parse (tHang . Text ) ; i++)//把字符串转换为数值
{
for (int j = 0; j < int .Parse (tLie .Text ); j++)
{
s += "* ";// s = s + "* "
}
s += "\r\n";
}
tShow.Text = s;

在textbox中输入*


int c;
string n = tShow .Text ;
foreach (char c in n)
{
if (n == "*")
{
c++;
}
}
lNumber.Text = n.ToString();
//计算出*的数量
/*运行后报错:错误 1 不能在此范围内声明名为“c”的局部变量,因为这样会使“c”具有不同的含义,而它已在“父级或当前”范围中表示其他内容了
*/



...全文
198 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
换个变量名就行了,这是编译器规定的,何必去钻这牛角尖
liulei68211 2016-12-05
  • 打赏
  • 举报
回复
已经int c了,又char c 当然出问题
xuzuning 2016-12-04
  • 打赏
  • 举报
回复
            int n = 0;
            string s = tShow .Text ;
            foreach (char c in s)
            {
                if (c == '*')
                {
                    n++;
                }
            }
            lNumber.Text = n.ToString();
hujiechong 2016-12-04
  • 打赏
  • 举报
回复
我需要用foreach 语句 来计算出上半个语句中打印了多少星星 打印输入文本框中的星星的行,和竖(对的) string s = ""; for (int i = 0; i <int .Parse (tHang . Text ) ; i++) { for (int j = 0; j < int .Parse (tLie .Text ); j++) { s += "* "; } s += "\r\n"; } tShow.Text = s; 在计算上个语句在文本框中输入的星星数量(报错) int c; string n = tShow .Text ; foreach (char c in n) { if (n == "*") { c++; } } lNumber.Text = n.ToString(); 错误 1 不能在此范围内声明名为“c”的局部变量,因为这样会使“c”具有不同的含义,而它已在“父级或当前”范围中表示其他内容了
Rondapapi 2016-12-04
  • 打赏
  • 举报
回复
引用 5 楼 Rondpapi 的回复:
[quote=引用 楼主 hujiechong 的回复:] string s = ""; for (int i = 0; i <int .Parse (tHang . Text ) ; i++)//把字符串转换为数值 { for (int j = 0; j < int .Parse (tLie .Text ); j++) { s += "* ";// s = s + "* " } s += "\r\n"; } tShow.Text = s; 在textbox中输入* int c; string n = tShow .Text ; foreach (char c in n) { if (n == "*") { c++; } } lNumber.Text = n.ToString(); //计算出*的数量 /*运行后报错:错误 1 不能在此范围内声明名为“c”的局部变量,因为这样会使“c”具有不同的含义,而它已在“父级或当前”范围中表示其他内容了 */
1、n==“*”这语问题很大,这里n是个集合,你不能让这个集合等于一个东西,而应该拿出集合中的一个元素去判断。在你的无精foreach语句中,c 就是要代表集合中的变量的,你应该让c ==“*”。 2、foreach语句中,只读,不能改变。你让c 去作判断了,但不能c++。你应该再定义一个变量用来计数。 试试这个: int count; string n = tShow.Text; foreach (char c in n) { if (c == "*") { count++; } } lNumber.Text = n.ToString(); [/quote] 不好意思,刚才这个代码没运行,刚运行了下有点问题,用这个吧: int count=0; string n = tShow.Text; char[] nc=n.ToCharArray(); foreach (char c in nc) { if (c == '*') { count++; } } lNumber.Text = n.ToString(); 首先,要先把字符串转换成字符型数组: char[] 其次,字符型的 不能用双引号,要单引号 ‘*’
Rondapapi 2016-12-04
  • 打赏
  • 举报
回复
引用 楼主 hujiechong 的回复:
string s = ""; for (int i = 0; i <int .Parse (tHang . Text ) ; i++)//把字符串转换为数值 { for (int j = 0; j < int .Parse (tLie .Text ); j++) { s += "* ";// s = s + "* " } s += "\r\n"; } tShow.Text = s; 在textbox中输入* int c; string n = tShow .Text ; foreach (char c in n) { if (n == "*") { c++; } } lNumber.Text = n.ToString(); //计算出*的数量 /*运行后报错:错误 1 不能在此范围内声明名为“c”的局部变量,因为这样会使“c”具有不同的含义,而它已在“父级或当前”范围中表示其他内容了 */
1、n==“*”这语问题很大,这里n是个集合,你不能让这个集合等于一个东西,而应该拿出集合中的一个元素去判断。在你的无精foreach语句中,c 就是要代表集合中的变量的,你应该让c ==“*”。 2、foreach语句中,只读,不能改变。你让c 去作判断了,但不能c++。你应该再定义一个变量用来计数。 试试这个: int count; string n = tShow.Text; foreach (char c in n) { if (c == "*") { count++; } } lNumber.Text = n.ToString();
xuzuning 2016-12-03
  • 打赏
  • 举报
回复
int c; string n = tShow .Text ; foreach (char c in n)
hujiechong 2016-12-03
  • 打赏
  • 举报
回复
错误 1 使用了未赋值的局部变量“i”
我是飞云 2016-12-03
  • 打赏
  • 举报
回复
            int i;
            string n = tShow .Text ;
            foreach (char c in n)
            {
                if (n == "*")
                {
                    i++;
                }
            }
            lNumber.Text = n.ToString();
  • 打赏
  • 举报
回复
foreach 的循环是不能改变循环变量的值的

110,568

社区成员

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

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

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