【问题标题】:Java weird Integer.parseInt issue (new to java)Java 奇怪的 Integer.parseInt 问题(Java 新手)
【发布时间】:2015-09-22 18:06:35
【问题描述】:

您好,我想将两个数字串起来,如下面的代码所示:

tmp2 = Integer.toString(preresult) + tmp2.substring(2, tmp2.length());

Tmp2 是之前声明的字符串。 Preresult 是一个包含数字的整数。如果我打印这一行,它会添加两个值而不是字符串连接。

如果我将 Integer.toString(preresult) 更改为例如 Integer.toString(5) 它会按照我的意愿连接字符串。但是有 Integer.toString(preresult) 它会添加两个数字而不是字符串连接。

预结果代码:

preresult = Integer.parseInt(tmp2.substring(0, 1)) + Integer.parseInt(tmp2.substring(1, 2));

//它从 tmp2 中选择数字并将它们加在一起。如果我打印 preresult 它会给我一个 int(例如 9)

再次请帮我连接这两个字符串而不是添加它们:

tmp2 = Integer.toString(preresult) + tmp2.substring(2, tmp2.length()); 

java新手请见谅:)

【问题讨论】:

  • 表达式Integer.toString(preresult) + tmp2.substring(2, tmp2.length()) 肯定会连接 Stringsnot 求和数字。请提供一个完整的例子来解释,是什么让你认为这里涉及算术。
  • 感谢您的快速答复。我试过在 tmp2 = Integer.toString(preresult) + tmp2.substring(2, tmp2.length()); 前后打印。它不会连接这些值,而是添加它们。正如我之前所说,如果我将 interger.toString(preresult) 更改为 Integer.toString(6) 它会将它们连接起来。
  • 它不会连接这些值,而是添加它们。 现在这只是一个不可能成立的声明。我们想帮助你弄清楚你是如何得出这个结论的。但为了做到这一点,我们需要更多的洞察力。请提供的不仅仅是代码 sn-ps。编辑您的问题并提供一个完整的 main 用于测试的方法,包括许多 System.out.println 调用,以便打印中间结果并向我们展示,将那些 println 调用打印出来。这是我们可以合作的。
  • println(tmp2); 在“连接线”之前和之后的输出是什么?
  • 没问题,我们喜欢帮助其他人解决编程问题。但是,下次请提供一个shortcompleteself-contained 示例。起初,您只提供了 1 行。这样我们就看不到相关部分(因为它不存在)。然后你走到了另一个极端,给了我们整个类,这是太多不相关的代码并且没有隔离代码(我们不知道,谁调用它以及如何调用它)。如果可能,尝试在一个示例中将您的问题重现为一个单一的、简短的 main 方法,其中包含 println 调用、它们打印的内容以及您期望它们打印的内容。

标签: java string concatenation tostring parseint


【解决方案1】:

您是否正在寻找这种类型的操作

class String1
{
    public static void main(String args[])
    {
        int a = 100;
        int b = 200;
        String s1 = Integer.toString(a);
        String s2 = Integer.toString(b);
        System.out.println(s1+s2);
    }
}

输出 - 100200

【讨论】:

    【解决方案2】:

    你给我们的那行确实连接了Strings,但你可能会感到困惑,因为前面的那行是对它们求和的:

    // tmp2 == "45" (taken from your comment)
    
    preresult = Integer.parseInt(tmp2.substring(0, 1)) + Integer.parseInt(tmp2.substring(1, 2));
    //                           |------ "4" -------|                     |-------- "5" -----|
    //          |--------------- 4 -----------------|    |------------------ 5 --------------|
    // preresult == 4 + 5 == 9
    
    println(tmp2); // prints the "45" (unchanged)
    
    tmp2 = Integer.toString(preresult) + tmp2.substring(2, tmp2.length());
    //                      |-- 9 --|                     |"45"|
    //     |----------- "9" ---------|   |------------- "" -------------|
    // tmp2 == "9" + "" == "9"
    
    println(tmp2); // prints "9"
    

    所以您的第一行将两个数字 4 和 5 相加,结果为 9。您给我们的行只是将结果 "9"(如 String)与另一个空 @ 连接起来987654325@,因此保留"9"

    【讨论】:

    • 是的,谢谢,我很困惑。感谢您的宝贵时间。
    猜你喜欢
    • 2013-08-19
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多