I have a task to read n
given numbers in a single line, separated by a space [
] from the console.
I know how to do it when I read every number on a separate line [Console.ReadLine[]
] but I need help with how to do it when the numbers are on the same line.
asked Jan 21, 2015 at 14:51
You can use
String.Split
. You can provide the character[s] that you want to use to split the string into multiple. If you provide none all white-spaces are assumed as split-characters[so new-line, tab etc]:
string[] tokens = line.Split[]; // all spaces, tab- and newline characters are used
or, if you want to use only spaces as delimiter:
string[] tokens = line.Split[' '];
If you want to parse
them to int
you can use Array.ConvertAll[]
:
int[] numbers = Array.ConvertAll[tokens, int.Parse]; // fails if the format is invalid
If you want to check if the format is valid use int.TryParse
.
answered Jan 21, 2015 at 14:52
Tim SchmelterTim Schmelter
434k69 gold badges655 silver badges901 bronze badges
2
You can split the line using String.Split[]
:
var line = Console.ReadLine[];
var numbers = line.Split[' '];
foreach[var number in numbers]
{
int num;
if [Int32.TryParse[number, out num]]
{
// num is your number as integer
}
}
answered Jan 21, 2015 at 14:52
Christoph FinkChristoph Fink
22.3k9 gold badges68 silver badges110 bronze badges
You can use Linq to read the line then split and finally convert each item to integers:
int[] numbers = Console
.ReadLine[]
.Split[new Char[] {' '}, StringSplitOptions.RemoveEmptyEntries]
.Select[item => int.Parse[item]]
.ToArray[];
answered Jan 21, 2015 at 14:56
Dmitry BychenkoDmitry Bychenko
169k17 gold badges153 silver badges200 bronze badges
You simply need to split the data entered.
string numbersLine = console.ReadLine[];
string[] numbers = numbersLine.Split[new char[] { ' '}];
// Convert to int or whatever and use
answered Jan 21, 2015 at 14:53
KamiKami
18.8k4 gold badges49 silver badges63 bronze badges
This will help you to remove extra blank spaces present at the end or beginning of the input string.
string daat1String = Console.ReadLine[];
daat1String = daat1String.TrimEnd[].TrimStart[];
string[] data1 = daat1String.Split[null];
int[] data1Int = Array.ConvertAll[data1, int.Parse];
answered Dec 13, 2018 at 12:12
you can do
int[] Numbers = Array.ConvertAll[Console.ReadLine[].Split[' '],[item] => Convert.ToInt32[item]];
the above line helps us get individual integers in a Line , separated by a Single space.Two Or More spaces between numbers will result in error.
int[] Numbers = Array.ConvertAll[Console.ReadLine[].Split[new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries], [item] => Convert.ToInt32[item]];
this variation will Fix the error and work well even when two or more spaces between numbers in a Line
answered Mar 27, 2019 at 15:34
1
you can use this function, it's very helpful
static List inputs = new List[];
static int input_pointer = 0;
public static string cin[char sep = ' ']
{
if [input_pointer >= inputs.Count]
{
string line = Console.ReadLine[];
inputs = line.Split[sep].OfType[].ToList[];
input_pointer = 0;
}
string v = inputs[input_pointer];
input_pointer++;
return v;
}
Example:
for[var i =0; i