using System;using System.Collections.Generic;namespace StrToInt_CS{ class PRogram { static void Main(string[] args) { string str = ""; while (!String.IsNullOrEmpty(str = Console.ReadLine())) { KeyValuePair<int, bool> ret = Program.StrToInt(str); if (ret.Value) { Console.WriteLine("Number for {0} is {1}", str, ret.Key); } else { Console.WriteLine("The input {0} is invalid", str); } } } public static KeyValuePair<int, bool> StrToInt(string s) { bool isMinus = false; bool isValid = false; int num = 0; int k = 0; // if contain leading space, then invalid if (s[k] == ' ') { new KeyValuePair<int, bool>(num, isValid); } // if contain Operator if (s[k] == '-') { isMinus = true; k++; } if (k < s.Length && s[k] == '+') { isMinus = false; k++; } int flag = isMinus ? -1 : 1; for (int i = k; i < s.Length; i++) { if (s[i] >= '0' && s[i] <= '9') { try { // check number is not overflow checked { num = num * 10 + flag * (s[i] - '0'); } } catch (Exception) { isValid = false; break; } } else { break; } // if complete traverse the whole string, then is valid if (i + 1 == s.Length) { isValid = true; } } return new KeyValuePair<int,bool>( num, isValid); } }}Test cases:
null The input null is invalid "" The input "" is invalid " " The input " " is invalid
The input is invalid 123 Number for 123 is 123 +123 Number for +123 is 123 -123 Number for -123 is -123 1a3333 The input 1a3333 is invalid +0 Number for +0 is 0 -0 Number for -0 is 0 2147483647 Number for 2147483647 is 2147483647 2147483648 The input 2147483648 is invalid -2147483648 Number for -2147483648 is -2147483648 -2147483649 The input -2147483649 is invalid + The input + is invalid - The input - is invalid ++ The input ++ is invalid __ The input __ is invalid -- The input -- is invalid
新闻热点
疑难解答