string str2_target = sr_target.ReadLine();
                string[] str3_target = str2_target.Split(new string[] { }, StringSplitOptions.RemoveEmptyEntries);
                foreach (String m in str3_target)
                {
                    MessageBox.Show(multiplyingPower);
                    buffer_target[l++] = Convert.ToByte(Convert.ToByte(m) * Convert.ToByte(multiplyingPower));
                    //MessageBox.Show(m);
                    
                }
为什么foreach不循环红字处换成具体数字如6就可以循环.....新手不明白为什么,哪位高手给看看。

解决方案 »

  1.   

    multiplyingPower 这是个神马变量?值呢?
      

  2.   

    for (int i = 0; i < 9; i++)
                {
                    if (i == 4)
                    {
                        string str_target = sr_target.ReadLine();
                        string[] str_multiplyingPower = str_target.Split(new string[] { }, StringSplitOptions.RemoveEmptyEntries);
                        foreach (string m in str_multiplyingPower)
                        {
                            multiplyingPower = m;
                        }
                        
                    }
    从一个文本文档中特定行取出特定值付给multiplyingPower 
      

  3.   

    foreach 没看出来问题 ,multiplyingPower到底是啥 ? 
      

  4.   

    multiplyingPower类型不对 就如LZ说的换称6 即int类型就可以  我估计是类型错误
      

  5.   

    前面定义的变量string multiplyingPower=null;
    完整代码:
    private void Form1_Load(object sender, EventArgs e)
            {
                String multiplyingPower =null;
                byte[] buffer_target = new byte[500];
                int  l = 0;
                FileStream fs_target = new FileStream(@"d:\TPS\Export\122_level10.txt",      FileMode.OpenOrCreate, FileAccess.Read);
                StreamReader sr_target = new StreamReader(fs_target, Encoding.Default);
                for (int i = 0; i < 9; i++)
                {
                    if (i == 4)
                    {
                        string str_target = sr_target.ReadLine();
                        string[] str_multiplyingPower = str_target.Split(new string[] { }, StringSplitOptions.RemoveEmptyEntries);
                        foreach (string m in str_multiplyingPower)
                        {
                            multiplyingPower = m;//取文本第五行最后一个数据(每行数据间用空格隔开)
                        }
                        
                    }
                    else
                    {
                        string str_target = sr_target.ReadLine();
                    }
                }
                for (int j = 0; j < 22;j++)
                {
                    string str2_target = sr_target.ReadLine();
                    string[] str3_target = str2_target.Split(new string[] { }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (String m in str3_target)
                    {
                        MessageBox.Show(multiplyingPower);
                        buffer_target[l++] = Convert.ToByte(Convert.ToByte(m) * Convert.ToByte(multiplyingPower));//到此就不循环了换成具体数字如6就可以循环
                        //MessageBox.Show(m);
                        
                    }
                }
                Bitmap bmp_target = ToGrayBitmap(buffer_target, 20, 22);
                this.pictureBox_target.Image = bmp_target;
                fs_target.Close();
                fs_target.Close();
      

  6.   

    LZ 你确实multiplyingPower 是String而不是string?
      

  7.   

    ToByte();我没记错 应该有19个重载
    里面应该有string的吧
    foreach (String m in str3_target)
    将这个String改成string
    multiplyingPower这个也改成string试试
      

  8.   

    都换成了string了,还是同样的问题。编译器没提示错误。
      

  9.   

    MessageBox.Show(multiplyingPower);显示什么内容?
      

  10.   

      MessageBox.Show(multiplyingPower);
    如果显示的是阿拉伯数字就
    int.parse(multiplyingPower)
      

  11.   

    如果是阿拉伯
    就int.parse(multiplyingPower);
      

  12.   

    multiplyingPower的值是多少?convert.toByte(string)数值是0~255,你看有没有超出
      

  13.   

    用try catch 试了下提示“输入字符串的格式不正确”用int.parse(multiplyingPower)也不行
      

  14.   

    foreach和for的主要区别是foreach只读属性,换成for循环试试看
      

  15.   

    foreach (string m in str_multiplyingPower)
      {
      multiplyingPower = m;
      }
        
    这样写在不是浪费时间嘛,
      

  16.   

    int multiplyingPower=int.TryParse(str_multiplyingPower[str_multiplyingPower.Lentgh-1] );
      

  17.   

    非常抱歉只看了标题了,内容没仔细看。应该是string应该先转换成char[]然后在转换成byte
    string s = "abcdef";
          byte y=0;
          char[] a = s.ToCharArray();      
          foreach (char x in s)
          {
            if (x == 'c')
              y = Convert.ToByte(x);
          }
          Console.Write(y);
      

  18.   


    写错了,呵呵int multiplyingPower;
    int.TryParse(str_multiplyingPower[str_multiplyingPower.Lentgh-1],multiplyingPower );
      

  19.   


    int multiplyingPower;
    int.TryParse(str_multiplyingPower[str_multiplyingPower.Lentgh-1],outmultiplyingPower );
      

  20.   

    问题以解决,buffer_target[l++] = Convert.ToByte(Convert.ToByte(m) * Convert.ToDecimal(multiplyingPower))我的数据是6.20, 6.3这样的数据,用 ToDecimal来转换,再tobyte转成字节型,这样会有小数丢失,但已基本解决,再次感谢所有楼上的几位给的建议,结贴了。