标签:flag print alt src 方法 value ret image http
输入一个字符串,包括数字字母符号,可以为空
如果是合法的数值表达则返回该数字,否则返回0
这道题主要考察如何将字符串转化为数字(不调用库函数),方法很简单,但是本题能反映出面试者的编程习惯,测试时要考虑到各种测试用例,保证代码的鲁棒性。
public class Solution { public int StrToInt(String str) { if (str.length() == 0 || str.trim().length() == 0) //trim()的作用:去掉字符串首尾的空格。 return 0; int index = 0; int flag = 0; long ans = 0; // 最终返回结果 while (index < str.length()){ if (str.charAt(index) == ‘-‘ || str.charAt(index) == ‘+‘){ if (index == 0){ flag = str.charAt(index) == ‘-‘ ? -1 : 1; }else{ return 0; } }else if (str.charAt(index) >= ‘0‘ && str.charAt(index) <= ‘9‘){ ans = ans * 10 + str.charAt(index) - ‘0‘; // char字符转化为数字的核心步骤 if (judge(ans,flag)){ // 对ans是否溢出int类型做判断 return 0; } }else{ return 0; } index++; } return flag == -1 ? flag*(int)ans : (int)ans; } private boolean judge(long ans, int flag) { if (flag == -1){ if (ans * flag < Integer.MIN_VALUE){ return true; }else{ return false; } }else{ if (ans > Integer.MAX_VALUE){ return true; }else{ return false; } } } }
int类型与char类型的相互转化
(1)int类型→char类型
(2)char类型→int类型
public static void main(String[] args) { // int → char :数字加一个‘0‘,然后强转为char int num1 = 2; char cNum1 = (char)(num1 + ‘0‘); System.out.println(cNum1); int num = 456; String sNum = num + ""; System.out.println(sNum); // char → int :将字符减去‘0‘ char cNum2 = ‘3‘; int num2 = (int)cNum2 - ‘0‘; System.out.println(num2); String str1 = "345"; int ans = 0; for (int i = 0; i < str1.length(); i++) { ans = ans * 10 + str1.charAt(i) - ‘0‘; } System.out.println(ans); }
标签:flag print alt src 方法 value ret image http
原文地址:https://www.cnblogs.com/HuangYJ/p/13597114.html