繁体   English   中英

如何使用parseInt将字符串转换为整数?

[英]How to convert string to integer with parseInt?

我有以下代码:

public static void main(String[] args) {
        List<Valtozas> lista = new ArrayList<Valtozas>();

        try {
            File fajl = new File("c://data//uzemanyag.txt");
            Scanner szkenner = new Scanner(fajl, "UTF8");

            while (szkenner.hasNext()) {
                String sor = szkenner.nextLine();
                String [] darabok = sor.split(";");
                String szoveg = darabok[0];
                Valtozas valtozas = new Valtozas(Integer.valueOf(darabok[0]), Integer.valueOf(darabok[1]), Integer.valueOf(darabok[2]));
                lista.add(valtozas);
            }
        }
        catch (Exception e) {

        }


        //3.FELADAT
        System.out.println("3.Feladat: Változások száma: "+lista.size());
    }

}

在这里,我想将String转换为int,但是我不能。 我尝试了Integer.Valueof(darabok [0]),但是它不起作用。 而且什么也没有发生,因此代码得以构建,但从此退出。

根据您显示给我们的源代码,问题在于输入文件和您尝试读取的程序之间存在格式不匹配。

该程序一次读取一行文件,然后使用单个分号(无空格!)作为文件分隔符将其拆分为多个字段。 然后,它尝试将每个分割线的前三个字段解析为整数。

为此,必须满足以下条件:

  • 每行必须至少包含三个字段。 (否则,您将获得ArrayIndexOutOfBound异常。)
  • 这三个字段必须与以下正则表达式匹配: -?[0-9]+ ,即可选的负号,后跟一个或多个十进制数字。
  • 结果数字必须在Integer.MIN_VALUEInteger.MAX_VALUE之间。

详细说明:

  • 不允许使用前导和尾随空格字符。
  • 不允许嵌入小数点标记和分组字符。
  • 不允许使用科学计数法。
  • 不允许数字太大或太小。

请注意,如果不满足上述任何约束,则运行时系统将引发异常。 不幸的是,您用以下代码包围了代码:

    try {
        ...
    }
    catch (Exception e) {

    }

通过捕获异常并在处理程序块中不执行任何操作,基本上可以忽略所有异常。 您是在对Java说“如果有任何问题,请不要告诉我!”。 因此,自然,Java不会告诉您出了什么问题。

永远不要这样 这被称为异常压缩,这是一个非常糟糕的主意1

有两种解决方法:

  1. 打印或记录堆栈跟踪; 例如

      catch (Exception e) { e.printStackTrace(); } 
  2. 删除try / catch,然后向main方法的签名中添加throws IOException

(您不能删除try / catch,因为new Scanner(fajl, "UTF8")抛出IOException 。这是一个已检查的异常,因此必须在方法签名中进行处理或声明。)

正确处理了异常后,您将获得一条异常消息和stacktrace,告诉您实际出了什么问题。 阅读,理解并修复程序。


1-就像点击“烦人”的红灯一样,表示您的汽车油位低!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM