精华内容
下载资源
问答
  • 今天小编就为大家分享一篇java判断字符串是正整数的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了java字符串转整数及MyAtoi方法的实现的相关资料,需要的朋友可以参考下
  • Java实现字符串转换成整数

    万次阅读 多人点赞 2019-07-21 14:52:11
    输入一个由数字组成的字符串,请把它转换成整数并输出。例如,输入字符串“123”,输出整数123。 请写出一个函数实现该功能,不能使用库函数。 2 解决方案 解答本问题的基本思路:从左至右扫描字符串中的每个字符,...

    1 问题描述
    输入一个由数字组成的字符串,请把它转换成整数并输出。例如,输入字符串“123”,输出整数123。

    请写出一个函数实现该功能,不能使用库函数。

    2 解决方案
    解答本问题的基本思路:从左至右扫描字符串中的每个字符,把之前扫描得到的数字乘以10,再加上当前字符表示的数字。

    但是,基本思路是这样,还要注意以下几点:

    (1)最好判断一下输入是否为空。

    (2)如果字符串的第一个字符是‘-’号,最终得到的整数必为负整数。

    (3)输入的字符串中不能含有不是数字的字符。

    (4)输入的字符串不能太长,否则转换成整数后会导致整数溢出。

    package com.liuzhen.string_1;
    
    import java.util.Scanner;
    
    public class StringToInt {
        public static int Max_INT = Integer.MAX_VALUE;
        public static int Min_INT = Integer.MIN_VALUE;
        
        public int getStringToInt(String A){
            char[] arrayA = A.toCharArray();
            int n = 0;
            if(A.equals("") || A.equals(null))     //判断输入是否为空
                return 0;
            int i = 0;
            while(arrayA[i] == ' ')   //处理字符串首位的空格
                i++;
            int sign = 1;   //用于判定输入字符串数字的正负,初始化为1表示为正数
            if(arrayA[i] == '+' || arrayA[i] == '-'){
                if(arrayA[i] == '-')
                    sign = -1;
                i++;
            }
            while(i < arrayA.length && Character.isDigit(arrayA[i])){  //确定是数字0~9才执行循环
                int c = arrayA[i] - '0';
                //当输入字符串表示数为正数,且大于Max_INT
                if(sign > 0 && (n > Max_INT/10 || (n == Max_INT/10 && c > Max_INT%10))){
                    n = Max_INT;
                    break;
                }
                //当输入字符串表示数为负数,且小于Min_INT
                if(sign < 0 && (n + Min_INT/10 > 0 || (n + Min_INT/10 == 0 && c + Min_INT%10 > 0))){
                    n = Min_INT;
                    break;
                }
                //把之前得到的数字乘以10,再加上 当前字符表示的数字
                n = n*10 + c;
                i++;
            }
            
            return sign > 0 ? n : -n;
        }
        public static void main(String[] args){
            StringToInt test = new StringToInt();
            Scanner in = new Scanner(System.in);
            System.out.println("请输入一个由数字组成的字符串:");
            String A = in.nextLine();
            int result = test.getStringToInt(A);
            System.out.println("整数result = "+result);
        }
    }
    

    运行结果:

    请输入一个由数字组成的字符串:
      -1000
    整数result = -1000
    
    
    请输入一个由数字组成的字符串:
    +100000
    整数result = 100000
    
    
    请输入一个由数字组成的字符串:
    a1212
    整数result = 0
    
    
    请输入一个由数字组成的字符串:
    整数result = 2147483647
    
    
    请输入一个由数字组成的字符串:
    -10000000000
    整数result = -2147483648
    
    展开全文
  • 今天小编就为大家分享一篇Java判断字符串是否是整数或者浮点数的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • JAVA字符串转换成整数

    万次阅读 2019-03-14 18:35:13
    剑指offer: 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。 public ...

    剑指offer: 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。

    public class Main {
    
      public static int StrToInt(String str) {
        if (str.length() == 0)
          return 0;
        char[] chars = str.toCharArray();
        // 判断是否存在符号位
        int flag = 0;
        if (chars[0] == '+')
          flag = 1;
        else if (chars[0] == '-')
          flag = 2;
        int start = flag > 0 ? 1 : 0;
        int res = 0;// 保存结果
        for (int i = start; i < chars.length; i++) {
          if (Character.isDigit(chars[i])) {// 调用Character.isDigit(char)方法判断是否是数字,是返回True,否则False
            int temp = chars[i] - '0';
            res = res * 10 + temp;
          } else {
            return 0;
          }
        }
        return flag == 1 ? res : -res;
    
      }
    
      public static void main(String[] args) {
        // TODO Auto-generated method stub
        String s = "-12312312";
        System.out.println("使用库函数转换:" + Integer.valueOf(s));
        int res = Main.StrToInt(s);
        System.out.println("使用自己写的方法转换:" + res);
    
      }
    
    }

     

    展开全文
  • 字符串转换成整数Java

    万次阅读 2018-05-27 09:24:26
    题目:字符串转换为整数。注意事项(思考点):(1)字符串中包含有非数字字符;(2)字符串中包含正负符号;(3)考虑最大的正整数;(4)考虑最小的负整数;(4)溢出。开始时我的想法只考虑了第一,第二种情况:/...

    题目:字符串转换为整数。

    思路:将字符串转化为整数首先是遍历字符串中的每一个字符,有三种情况:首字符是正号,首字符是负号,首字符非正负号;然后遍历每一个字符进行num = num * 10 + charArray[i] - '0',在进行这个工作之前首先需要对charArray[i]进行是否为数字字符的判断,循环遍历直到结束,输出结果;

    注意事项(思考点):(1)字符串中包含有非数字字符;(2)字符串中包含正负符号;(3)考虑最大的正整数;(4)考虑最小的负整数;(4)溢出。

    开始时我的想法只考虑了第一,第二种情况:

    /**
     * 将字符串转换为整数 1:非数字字符 2:正负号 
     * @author Peter
     */
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		String str = sc.nextLine();
    		int length = str.length();
    		int number = 0;
    		char[] charArray = str.toCharArray();
    		if (charArray[0] == '-') {
    			for (int i = 1; i < length; i++) {
    				if (charArray[i] > '9' || charArray[i] < '0') {
    					System.out.println("输入的字符串中包含非数字字符");
    					return;
    				} else {
    					number = number * 10 + charArray[i] - '0';
    				}
    			}
    			System.out.println(-number);
    		} else if (charArray[0] == '+') {
    			for (int i = 1; i < length; i++) {
    				if (charArray[i] > '9' || charArray[i] < '0') {
    					System.out.println("输入的字符串中包含非数字字符");
    					return;
    				} else {
    					number = number * 10 + charArray[i] - '0';
    				}
    			}
    			System.out.println(number);
    		} else {
    			for (int i = 0; i < length; i++) {
    				if (charArray[i] > '9' || charArray[i] < '0') {
    					System.out.println("输入的字符串中包含非数字字符");
    					return;
    				} else {
    					number = number * 10 + charArray[i] - '0';
    				}
    			}
    			System.out.println(number);
    		}
    	}
    }

    源码(考虑了上面所有情况):

    package com.chap01.offer01;
    
    import java.util.Scanner;
    
    /**
     * 字符串转整形源码
     */
    public class Main1 {
    
    	/**
    	 * 将字符串转化为整形
    	 * @param s
    	 * @return
    	 * @throws NumberFormatException
    	 */
    	public static int parseInt(String s) throws NumberFormatException {
    		return parseInt(s, 10);
    	}
    	
    	/**
    	 * 将字符串转化为整形,其中radix代表基数,即代表你输入的是几进制的字符串。
    	 * @param s
    	 * @param radix
    	 * @return
    	 * @throws NumberFormatException
    	 */
    	public static int parseInt(String s, int radix)
    			throws NumberFormatException {
    		/*
    		 * WARNING: This method may be invoked early during VM initialization
    		 * before IntegerCache is initialized. Care must be taken to not use the
    		 * valueOf method.
    		 */
    		
    		//判断是否为空
    		if (s == null) {
    			throw new NumberFormatException("null");
    		}
    		
    		//判断不能小于2进制
    		if (radix < Character.MIN_RADIX) {
    			throw new NumberFormatException("radix " + radix
    					+ " less than Character.MIN_RADIX");
    		}
    
    		//判断不能大于36进制 0-9,a-z一共36进制
    		if (radix > Character.MAX_RADIX) {
    			throw new NumberFormatException("radix " + radix
    					+ " greater than Character.MAX_RADIX");
    		}
    
    		int result = 0;
    		boolean negative = false;
    		int i = 0, len = s.length();
    		int limit = -Integer.MAX_VALUE;  //-0x7fffffff即:-2147483647 
    		int multmin;
    		int digit;
    
    		if (len > 0) {
    			char firstChar = s.charAt(0);  //取首字符
    			if (firstChar < '0') { // Possible leading "+" or "-"
    				if (firstChar == '-') {
    					negative = true;
    					limit = Integer.MIN_VALUE;  //0x80000000
    				} else if (firstChar != '+')
    					throw NumberFormatException.forInputString(s);
    
    				if (len == 1) // Cannot have lone "+" or "-"
    					throw NumberFormatException.forInputString(s);
    				i++;
    			}
    			multmin = limit / radix;  //-214748364
    			while (i < len) {
    				// Accumulating negatively avoids surprises near MAX_VALUE
    				digit = Character.digit(s.charAt(i++), radix);  //返回指定基数的数值
    				if (digit < 0) {
    					throw NumberFormatException.forInputString(s);
    				}
    				if (result < multmin) {
    					throw NumberFormatException.forInputString(s);
    				}
    				result *= radix;  //字符abc: a*100 + b*10 + c
    				if (result < limit + digit) {
    					throw NumberFormatException.forInputString(s);
    				}
    				result -= digit;
    			}
    		} else {
    			throw NumberFormatException.forInputString(s);
    		}
    
    		return negative ? result : -result;
    	}
    	
    	public static void main(String[] args){
    		Scanner sc = new Scanner(System.in);
    		String str = sc.nextLine();
    		int num = parseInt(str);
    		System.out.println(num);
    	}
    }
    
    package com.chap01.offer01;
    //异常类
    public class NumberFormatException extends IllegalArgumentException {
    	static final long serialVersionUID = -2848938806368998894L;
    
    	/**
    	 * Constructs a <code>NumberFormatException</code> with no detail message.
    	 */
    	public NumberFormatException() {
    		super();
    	}
    
    	/**
    	 * Constructs a <code>NumberFormatException</code> with the specified detail
    	 * message.
    	 * 
    	 * @param s
    	 *            the detail message.
    	 */
    	public NumberFormatException(String s) {
    		super(s);
    	}
    
    	/**
    	 * Factory method for making a <code>NumberFormatException</code> given the
    	 * specified input which caused the error.
    	 * 
    	 * @param s
    	 *            the input causing the error
    	 */
    	static NumberFormatException forInputString(String s) {
    		return new NumberFormatException("For input string: \"" + s + "\"");
    	}
    }


    展开全文
  • Java 实现把字符串转换成整数

    万次阅读 2018-05-10 10:07:06
    将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 。输入一个字符串,包括数字字母符号,可以为空; 如果是合法的数值表达则返回该数字,否则返回0;...
    将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 。
    
    输入一个字符串,包括数字字母符号,可以为空; 

    如果是合法的数值表达则返回该数字,否则返回0;

    代码

        public static int parseString2Int(String str) {
            if (Strings.isNullOrEmpty(str)) {
                return 0;
            }
            // 数字的正负,默认是正数
            int symbol = 1;
            char[] array = str.toCharArray();
            int sum = 0;
            // 如果第一位是'-',说明结果应该是个负数,'+'不需要处理symbol
            // 同时替换该位置上的字符为0,这样在下面的处理中,可以认为是跳过该字符
            // 因为0 * 10还是0
            if (array[0] == '-') {
                symbol = -1;
                array[0] = '0';
            } else if (array[0] == '+') {
                array[0] = '0';
            }
            for (int i = 0; i < array.length; i++) {
                // 如果不是数字,而是其他字母符号一类非数字字符,则直接返回0
                if (array[i] < '0' || array[i] > '9') {
                    return 0;
                }
                // sum * 10是为了将当前已获得数字整体左移一位,让新的数字可以处于个位上,比如"12"
                // 第一次拿出1,在第二次拿出2的时候,1应该在十位上,2在个位上,所以 1 * 10 + 2 = 12
                // array[i] - '0',这里减去字符'0',是因为字符'0'-'9'的ascii码值与其对应的数字相差48,而'0'的ascii码值正好是48
                sum = sum * 10 + array[i] - '0';
            }
            return sum * symbol;
        }
    
        public static void main(String[] args) {
            int result = parseString2Int("123");
            System.out.println(result);
        }

    展开全文
  • java 字符串转化为整数溢出问题处理

    千次阅读 2015-05-03 16:54:16
    1、思路及注意事项 ...1)字符串开头是“+”号或“-”号的处理 2)非法字符的判断(不是数字) 3)整数溢出问题。  看看Java函数库中的Integer.parseInt(String sting)的源码如何处理这些问题的
  • 十六进制的百度百科如下: 十六进制(英文名称:Hexadecimal),是计算机中数据的一种表示方法。...详细十六进制的换算之类请读者自查,下面直接给出十六进制字符串转整数的实现 值为数字的char...
  • java 整数转化成字符串Given an integer and we have to convert it into string. 给定一个整数,我们必须将其转换为字符串Java conversion from Integer to String Java整数字符串的转换 To convert an ...
  • 字符串转换成整数java版)

    千次阅读 2017-06-07 11:16:17
    【题目描述】将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0【输入说明】输入一个字符串,包括数字字母符号,可以为空【输出说明】如果是合法的数值...
  • java实现字符串转化为整数

    千次阅读 2014-09-03 16:28:26
    java实现字符串转化为整数,参考了Java函数库中的Integer.parseInt(String sting)的源码,考虑了多种情况。
  • LeetCode-字符串转整数(Java)

    千次阅读 2018-10-30 14:29:32
    实现 atoi,将字符串转为整数。 示例 示例 1: 输入: &amp;quot;42&amp;quot; 输出: 42 示例 2: 输入: &amp;quot; -42&amp;quot; 输出: -42 解释: 第一个非空白字符为 '-', 它
  • 字符串转换成整数 java

    千次阅读 2018-11-09 22:30:56
    字符串转换成整数 java 题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的...
  • 考虑程序要全面: 边界处理:溢出,最大正整数,最小负整数返回什么有非数字符号,正负号,小数点,会有指数吗?(都没有)有空格(在开头或在中间或在最后) 错误处理,鲁棒性:空指针 #include #include #...
  • Java把带小数点的字符串转换成整数

    千次阅读 2020-05-27 10:05:54
    带小数点的字符串是不能直接整数的,应该先将它成double类型再int整数。 具体操作如下: String str = "80.0"; nt intValue = Double.valueOf(str).intValue();
  • java 判断字符串是否为整数(亲测)

    千次阅读 2020-03-21 14:23:30
    正则表达式 /* ... * @param str 传入的字符串 * @return 是整数返回true,否则返回false */ public static boolean isNumeric(String str) { Pattern pattern = Pattern.compile("^[-\\+]?[...
  • java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) java.lang.Integer.parseInt(Integer.java:492) java.lang.Integer.parseInt(Integer.java:527) org.apache.jsp.admin....
  • 字符串转换整数pythonIn this tutorial you’ll see two ways to convert string to integer in python. 在本教程中,您将看到在python中将字符串转换为整数的两种方法。 As we know we don’t have to declare ...
  • 字符串转换为数字,字符串与字符数组的相互转换
  • LeetCode008——字符串转整数(atoi)

    千次阅读 2018-08-22 07:48:30
    我的LeetCode代码仓:https://github.com/617076674/LeetCode ... 题目描述: 知识点:字符串 思路:顺序遍历字符串,根据题意读取整数 对于这一题来说,难点不在算法的实现上,难点在理解题意并正确处理各种...
  • JAVA字符串转日期或日期字符串

    万次阅读 2018-10-30 18:34:17
     透过这个API我们便可以随心所欲的将日期成我们想要的字符串格式,例如希望将日期输出成2008  年7月10日,我们可以这么写:   SimpleDateFormat sdf = new SimpleDateFormat( " yyyy年MM月dd日 " );   ...
  • * @Description 判断字符串是否实际上是整数 * @Author .Mark * @Date 2019年1月30日 */ public static Boolean isInteger(String str) { // 1.限制入参 if (str == null || "".equals(str)) { ...
  • 8. 字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无...
  • 主要介绍了浅谈java字符串数组、字符串、整形之间的转换,具有一定参考价值,需要的朋友可以了解下。
  • 字符串转换整数pythonUnlike many other programming languages out there, Python does not implicitly typecast integers (or floats) to strings when you concatenate them to strings. 与现有的许多其他编程...
  • 一哥们面腾讯的时候面试官让他手写一个字符串转数组的代码,后来他说写的不大好...我平时用Java比较多,在Java里面有个Integet.parseInt(string)函数可以 让字符串转整数。今天我们就进去它的源码分析一下是怎么做的。
  • 运行结果为: 转载于:https://www.cnblogs.com/cmyBlog/p/9707368.html
  • 输入数字字符串,转换为整数或浮点数 package day02; import java.util.Scanner; /** * Created by lenovo on 2020/12/14. * 输入数字字符串,转换为整数或浮点数 */ public class homework2 { public static ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 273,939
精华内容 109,575
关键字:

java字符串转整数

java 订阅