字符串转成整数

题目:把一个字符串转换成整数。

考虑的问题:

1、空指针;

2、包含非数字字符;

3、包含正负号;

4、最大正整数;

5、最小负整数;

6、溢出(还没考虑)

代码:

 1 package com.yyq;
 2 import java.util.regex.Matcher;
 3 import java.util.regex.Pattern;
 4
 5 /**
 6  * Created by Administrator on 2015/9/4.
 7  */
 8 public class StringToInt {
 9     public static void main(String args[]) {
10         String str = "-123";
11         int integer = strToInt(str);
12         System.out.println("number: "+integer);
13     }
14
15     public static int strToInt(String str) {
16         int number = 0;
17         int flag = 0;
18         int subflg = 0;
19         str.trim();
20         try {
21             if (str == null || str == "") {
22                 System.out.println("String is null.");
23                 return 0;
24             }
25             char c[] = str.toCharArray();
26             String newStr = null;
27             if(c[0] == ‘-‘ || c[0] == ‘+‘){
28                 flag = 1;
29                 if(c[0] == ‘-‘) subflg = 1;
30                 newStr = new String(c,1,c.length-1);
31                 System.out.println(newStr);
32             }
33
34             Pattern pattern = Pattern.compile("[a-zA-Z]+");
35             Matcher mat = pattern.matcher(newStr);
36             if (mat.matches()) {
37                 System.out.println("String contains character.");
38                 number = 0;
39             } else {
40                 if(flag == 1) {
41                     for (int i = 1; i < c.length; i++)
42                         number = number * 10 + c[i] - ‘0‘;
43                     if (subflg == 1)
44                         number = number * -1;
45                 }
46                 System.out.println("Integer: "+Integer.parseInt(str));
47             }
48         }catch (Exception e){
49            e.printStackTrace();
50         }
51         return number;
52     }
53 }
时间: 2024-10-17 18:02:56

字符串转成整数的相关文章

剑指offer之【把字符串转换成整数】

题目: 把字符串转换成整数 链接: https://www.nowcoder.com/practice/1277c681251b4372bdef344468e4f26e?tpId=13&tqId=11202&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0

程序员面试50题(4)—把字符串转换成整数[算法]

题目:输入一个表示整数的字符串,把该字符串转换成整数并输出.例如输入字符串"345",则输出整数345. 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程序员就这道题写出的代码有很大区别,可以说这道题能够很好地反应出程序员的思维和编程习惯,因此已经被包括微软在内的多家公司用作面试题.建议读者在往下看之前自己先编写代码,再比较自己写的代码和下面的参考代码有哪些不同. 首先我们分析如何完成基本功能,即如何把表示整数的字符串正确地转换成整数.还是以"345

字符串转换成整数

题目描述 输入一个由数字组成的字符串,把它转换成整数并输出.例如:输入字符串"123",输出整数123. 给定函数原型int StrToInt(const char *str) ,实现字符串转换成整数的功能,不能使用库函数atoi. 分析与解法 基本思路为:从左至右扫描字符串,把之前得到的数乘以10,然后加上当前字符所表示的数字. 然而,我们需要考虑以下几个问题: 输入为空指针时 数字前面的正负号 非法的字符 整形溢出 前三个问题很容易解决,这里主要考虑整形溢出的问题.一般来说,当发生

C语言将一个字符串转换成整数

1.环境 ubuntu16.04 Eclipse C语言 2.问题 用C语言编写程序,将一个字符串转换成整数. 3.解决方法 程序代码:https://github.com/southeast02/JZOF/blob/master/chap01_page12_1.c

[算法练习] 把字符串转换成整数

题目说明: 输入一个表示整数的字符串,把该字符串转换成整数并输出.例如输入字符串"345",则输出整数345. 程序代码: #include <gtest/gtest.h> using namespace std; int StrToInt(const char* szValue, int nBase = 0, bool* bValid = NULL) { long long nValue = 0; int nSign = 1; if (bValid) { *bValid

170319 剑指offer 1.把一个字符串转化成整数(简单问题的全面性考虑)

工作的时间越长,越感觉基础的重要性,当我们对程序的框架结构越来越熟悉的时候,越会注意这一点,在工作当中,功能的实现是重要的,但是代码的健壮性,重用性,与扩展性确往往更为重要,在学习新技术的同时,我们或许应该抽出一点时间,去思考代码可能出现的问题. 关于剑指offer的这本书,可能所有刚毕业找工作的人,或者准备找工作的人都曾经看过,但是当时我们面对一些东西的时候心情过于浮躁,往往忽视了简单的却又十分重要的环节,(ps:也可能只有我是这样) 面试中一道简单的问题(把一个字符串转化成整数) 可能接触c

【LeetCode-面试算法经典-Java实现】【008-String to Integer (atoi) (字符串转成整数)】

[008-String to Integer (atoi) (字符串转成整数)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what

[Leetcode] String to integer atoi 字符串转换成整数

Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases. Notes: It is intended for this problem to be spe

17.把字符串转换成整数atoi

http://zhedahht.blog.163.com/blog/static/25411174200731139971/ 代码如下: bool bValid = true; int str2int_core(const char *digit,bool minus) { long long sum = 0; int flag = minus ? -1:1; while(*digit!='\0') { if (*digit>='0'&&*digit<='9') { sum =