怎么把文本框架的数字字符串转换为整数

img

在输入数字之后,我想把输入的字符数组转换为整数,但是这部分的程序报错了,怎么修改呢?

你调试下,看看获得的str到底是什么。是不是根本不是这个框,或者里面有别的符号、空格。注意是整数,不能是小数。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7641891
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:使用字符数组编写一个程序,能够实现存储从键盘输入的两个字符串
  • 除此之外, 这篇博客: 如何设计一套完整的订单系统,或者完整的业务流程?中的 库存超卖的解决方案 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 1.缓存库存信息

    由于大部分数据读取请求都被 Redis 挡住了,保护了MySQL

    2.检查 Redis 库存和扣减

    Redis 库存是两步操作,通过Lua脚本将这两步操作,合并成一个整体,保证原子操作性

    3.MySQL复检

    哪怕 Redis 侧方行,可以创建订单了,到 MySQL 的时候也需要再检查一次

  • 您还可以看一下 张传波老师的软件设计是怎样炼成的?课程中的 整个程序需要考虑的设计规范小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    这个问题是关于如何把字符串转换成整数,可以通过Integer.valueOf()方法来实现,如果该字符串不是一个数字字符串,则会抛出一个NumberFormatException异常。

    示例代码如下:

    public static int string2Int(String s) {
        int res = 0, sign = 1, i = 0, n = s.length();
        if (s.charAt(i) == '-') {sign = -1;i++;}
        if (s.charAt(i) == '+') {sign = 1;i++;}
        for (; i < n; i++) {
            if (s.charAt(i) < '0' || s.charAt(i) > '9') {
                throw new NumberFormatException("Invalid input string: " + s);
            }
            res = res * 10 + (s.charAt(i) - '0');
        }
        return sign * res;
    }
    

    这个示例代码中,我们首先处理符号位,并初始化res和i等局部变量,然后遍历给定的字符串,如果该字符串中存在非数字字符,则抛出一个NumberFormatException异常,否则,我们继续计算res的值即可。

    为了处理符号,我们使用了一个sign的整数变量(1或-1),也就是说,如果该字符串的第一个字符是'-',则设置sign为-1,否则设置为1。

    另外,如果该字符串前缀为'+',我们可以忽略它。

    示例代码,用于测试:

    public static void main(String[] args) {
        String[] ss = {"100", "-123", "+123", "abc", "0", "100000000000000000000", "2147483647", "-2147483648"};
        for (String s : ss) {
            try {
                int res = string2Int(s);
                System.out.println(s + " => " + res);
            } catch (NumberFormatException e) {
                System.out.println(e.getMessage());
            }
        }
    }
    

    输出:

    100 => 100
    -123 => -123
    +123 => 123
    Invalid input string: abc
    0 => 0
    100000000000000000000 => Invalid input string: 100000000000000000000
    2147483647 => 2147483647
    -2147483648 => -2147483648