zoukankan      html  css  js  c++  java
  • C#之获取控制台输入的数字

    今天写K均值算法的时候,需要将控制台输入的初始化簇中心点读入(就是一些数字),读入的方式是一行读入,以空格隔开,回车结束。例如:“1_2_3...”

    C#中控制台读入的方法也不多,常见的有:

    1)Console.Read() 方法读取单个字符,获取的是用户输入的任何值的ASCII值;例如输入的是‘1’,得到的是“49”。该方法是读入一行处理一次。

    2)Console.ReadLine()方法读取一行字符串,获取的是输入的一行的整个字符串;该方法是读入一行处理一次。

    3)Console.ReadKey()方法读入的是一个按键值,一次读入一个字符。例如:让用户输入Y或者N的时候可以用。实际上这个方法在实际应用中并不用来读入数据,它有另一个功能就是可以使当前程序等待键盘输入,以便退出程序。使调试时能看到输出结果。如果没有此句,命令窗口会一闪而过。(相信初学的会遇到这个问题,作用跟C中的getch()函数一样。)

    那么怎么实现我的输入要求呢,我用的是Console.ReadLine()和split()两个方法组合实现的。当然还有更好的方法,等待读者去发现。具体代码如下:

    Console.Write("\n输入K个初始簇中心点的序号(序号一行输入,以空格隔开,回车结束!)\n");
                string str = Console.ReadLine();//从控制台读入输入
                string[] nums = str.Split(new string[]{ " " }, StringSplitOptions.None);//这里是以空格隔开
                int index=0;
                while(index<nums.Count<string>())
                {
                    int num=Convert.ToInt32(num[index]);  //获得数字                
                    index++;
                }

    同时简单介绍一下split()这个方法:(该部分内容转自:http://www.cnblogs.com/yugen/archive/2010/08/18/1802781.html

    1、用字符串分隔: 
    using System.Text.RegularExpressions;
    string str="aaajsbbbjsccc";
    string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);
    foreach (string i in sArray) Response.Write(i.ToString() + "<br>");
    输出结果:
    aaa
    bbb
    ccc
    2、用多个字符来分隔:
    string str="aaajbbbscccjdddseee"; 
    string[] sArray=str.Split(new char[2] {'j','s'}); 
    foreach(string i in sArray) Response.Write(i.ToString() + "<br>"); 
    输出结果:
    aaa
    bbb
    ccc
    ddd
    eee
    3、用单个字符来分隔:
    string str="aaajbbbjccc";
    string[] sArray=str.Split('j');
    foreach(string i in sArray) Response.Write(i.ToString() + "<br>");
    输出结果:
    aaa
    bbb
    ccc
     
    ////////////////////////////////////////////////
    string[] arr = str.Split("o");

    这是一个具有语法错误的语句,Split 的 separator 参数应该是 char[] 或 string[],不应是字符串。正确的示例:

    string str = "technology";
    char[] separator = { 'o' };
    string[] arr = str.Split(separator);
    ////////////////////////////////////////////////////

    String.Split 方法有6个重载函数:
    程序代码
    1) public string[] Split(params char[] separator)
    2) public string[] Split(char[] separator, int count)
    3) public string[] Split(char[] separator, StringSplitOptions options)
    4) public string[] Split(string[] separator, StringSplitOptions options)
    5) public string[] Split(char[] separator, int count, StringSplitOptions options)
    6) public string[] Split(string[] separator, int count, StringSplitOptions options)

    下边我们通过一些实例来说明下怎么使用(以下string words = "1,2.3,,4";):
    1. public string[] Split(params char[] separator)
    程序代码
    string[] split = words.Split(new Char[] { ',' });//返回:{"1","2.3","","4"}
    string[] split = words.Split(new Char[] { ',', '.' });//返回:{"1","2","3","","4"}
    2. public string[] Split(char[] separator, int count)ITPUB个人空间,n:H!C0M/S3U\u0002P
    程序代码
    string[] split = words.Split(new Char[] { ',', '.' }, 2);//返回:{"1","2.3,,4"}
    string[] split = words.Split(new Char[] { ',', '.' }, 6);//返回:{"1","2","3","","4"}
    3. public string[] Split(char[] separator, StringSplitOptions options)
    程序代码
    string[] split = words.Split(new Char[] { ',', '.' }, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2","3","4"} 不保留空元素
    string[] split = words.Split(new Char[] { ',', '.' }, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
    4. public string[] Split(string[] separator, StringSplitOptions options)
    程序代码
    string[] split = words.Split(new string[] { ",", "." }, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2","3","4"} 不保留空元素
    \u0002w1I+Ch%^\u0017}0string[] split = words.Split(new string[] { ",", "." }, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
    5. public string[] Split(char[] separator, int count, StringSplitOptions options)
    程序代码
    string[] split = words.Split(new Char[] { ',', '.' }, 2, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2.3,,4"} 不保留空元素ITPUB个人空间1K;e\u0007f\u0008f }\u0011C n
    string[] split = words.Split(new Char[] { ',', '.' }, 6, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
    6. public string[] Split(string[] separator, int count, StringSplitOptions options)
    程序代码
    string[] split = words.Split(new string[] { ",", "." }, 2, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2.3,,4"} 不保留空元素
    string[] split = words.Split(new string[] { ",", "." }, 6, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
    需要注意的是没有重载函数public string[] Split(string[] separator),所以我们不能像VB.NET那样使用words.Split(","),而只能使用words.Split(',')
  • 相关阅读:
    hdoj2187:悼念512汶川大地震遇难同胞 (贪心)
    2.0其它之Transform详解,以及UIElement和FrameworkElement的常用属性
    2.0外观之样式, 模板, 视觉状态和视觉状态管理器
    2.0图形之Ellipse, Line, Path, Polygon, Polyline, Rectangle
    2.0控件之ListBox, MediaElement, MultiScaleImage, PasswordBox, ProgressBar, RadioButton
    2.0画笔之SolidColorBrush, ImageBrush, VideoBrush, LinearGradientBrush, RadialGradientBrush
    2.0图形之基类System.Windows.Shapes.Shape
    2.0交互之鼠标事件和键盘事件
    2.0控件之ScrollViewer, Slider, StackPanel, TabControl, TextBlock, TextBox, ToggleButton
    2.0交互之InkPresenter(涂鸦板)
  • 原文地址:https://www.cnblogs.com/zcftech/p/2752729.html
Copyright © 2011-2022 走看看