当前位置:编程学习 > C#/ASP.NET >>

把String转换成Char有错误

--------------------编程问答-------------------- 你那个字符串n可能不止一个字符,比如n=1234   而char只能存一个字符  char='1'  char='2' --------------------编程问答-------------------- 你把 “顶顶顶顶顶顶” 这么多字符转成char,能转吗,每种数据都是有取值范围的 --------------------编程问答-------------------- 那我该怎么改动一下呢
能不能帮帮我改一下,谢谢! --------------------编程问答-------------------- 这是我的代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private static char[] constant =   
      {   
        '0','1','2','3','4','5','6','7','8','9',  
        'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',   
        'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'   
      };

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button4_Click(object sender, EventArgs e)
        {
            //i1表示输入数
            int i1;
            if (String.IsNullOrEmpty(textBox1.Text.Trim()))
            {
                MessageBox.Show("输入数不能为空,谢谢!");
                return;
            }
            //把文本框1的数字字符串转换成32位的整数后赋给i1
            i1 = Convert.ToInt32(textBox1.Text.Trim());
            if (i1 == 0)
            {
                MessageBox.Show("输入数不能为0,谢谢!");
                return;
            }
            else if (i1 > 63)
            {
                MessageBox.Show("输入的数字不得大于62,谢谢!");
            }
            System.Text.StringBuilder newRandom = new System.Text.StringBuilder(62);
            Random rd = new Random();
            //定义一个整数i作为计数器
            int i;
            string n;
            char p;//,q;
            int m = 61;
            //int tmp;

            listBox1.Items.Clear();
            for (i = 0; i < i1; i++)
            {
                char [] Newnum = new char[i1];
                newRandom.Append(constant[rd.Next(62)]);
                n = newRandom.ToString();
                Newnum[i] = Convert.ToChar(n);
                //q = Convert.ToChar(n);
                //foreach (char q in n)
                //p = q;
                //q = constant[m];
               // constant[m] = p;
                p = Newnum[i];
                Newnum[i] = constant[m];
                constant[m] = p;
                listBox1.Items.Add(constant[m]);
                m--;
                
            }
        }
    }
} --------------------编程问答-------------------- 不要用char数组来存数据就可以了
char [] Newnum = new char[i1];
改成
string [] Newnum = new string [i1]; --------------------编程问答--------------------
但是红色线部分,会提示不能把char转换成string
--------------------编程问答-------------------- 问下你这个窗口是拿来干啥用的 --------------------编程问答-------------------- 生成自己想要输出位数的随机生成数,从1~9,A~Z,a~z,生成不能重复。 --------------------编程问答--------------------
 string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
            string[] allCharArray = allChar.Split(Convert.ToChar(","));
            string RandomCode = "";
            int temp = -1;

            Random rand = new Random();
            for (int i = 0; i < CodeCount; i++)
            {
                if (temp != -1)
                {
                    rand = new Random(temp * i * ((int)DateTime.Now.Ticks));
                }

                int t = rand.Next(62);

                while (temp == t)
                {
                    t = rand.Next(62);
                }

                if (t == 62)
                {
                    Console.WriteLine(t.ToString() + "|" + i.ToString());
                }
                temp = t;
                RandomCode += allCharArray[t];
            }
            return RandomCode.ToLower();
--------------------编程问答--------------------
引用 9 楼 liujian650107 的回复:
 string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
            string[] allCharArray = allChar.Split(Convert.ToChar(","));
            string RandomCode = "";
            int temp = -1;

            Random rand = new Random();
            for (int i = 0; i < CodeCount; i++)
            {
                if (temp != -1)
                {
                    rand = new Random(temp * i * ((int)DateTime.Now.Ticks));
                }

                int t = rand.Next(62);

                while (temp == t)
                {
                    t = rand.Next(62);
                }

                if (t == 62)
                {
                    Console.WriteLine(t.ToString() + "|" + i.ToString());
                }
                temp = t;
                RandomCode += allCharArray[t];
            }
            return RandomCode.ToLower();
CodeCount是参数.  --------------------编程问答-------------------- 你把字符转成char,肯定不行啊;我不明白 你这是做数字的计数,为什么要把数转换成char和string类型呢;int decimal不都可以么  --------------------编程问答-------------------- 9楼和10楼的应该可以,至于6楼那个为什么会出错,因为你前面是定义的private static char[] constant{}是字符类型的,下面的Newnum把char变成了string类型,但是你p又是char类型,这里把string变成char类型就肯定会报错啊,。。这问题一眼就看出来了, --------------------编程问答-------------------- 不需转化后遍历,直接即可
            listBox1.Items.Clear();
             for (i = 0; i < i1; i++)
             {
                 newRandom.Append(constant[rd.Next(62)]);
                 foreach (char q in newRandom.ToString())
                 p = q;
                 ......
                 
             }
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,