java - char + String 给出奇怪的结果

标签 java string char concatenation

问题:
给定一个字符串,取前 2 个字符并返回在前后添加 2 个字符的字符串,因此“kitten”产生“kikittenki”。如果字符串长度小于 2,则使用其中的任何字符。

    front22("kitten") → "kikittenki"
    front22("Ha") → "HaHaHa"
    front22("abc") → "ababcab"

我的回答:

public String front22(String str) {
    if(str.length() > 2) {
        char first = str.charAt(0);
        char second = str.charAt(1);
       return first + second + str + first + second;
    }  
    return str + str + str;
}

    Results:
    Expected                           Run             results
    front22("kitten") → "kikittenki"   "212kittenki"   X        
    front22("Ha") → "HaHaHa"           "HaHaHa"        OK       
    front22("abc") → "ababcab"         "195abcab"      X        
    front22("ab") → "ababab"           "ababab"        OK       
    front22("a") → "aaa"               "aaa"           OK       
    front22("") → ""                   ""              OK       
    front22("Logic") → "LoLogicLo"     "187LogicLo"    X        

那么输出前面的数字(即 212、195 和 187)来自哪里?我是 JAVA 的新手。抱歉,如果这是我不知道的非常简单或基本的事情。我知道我可以通过以下方式完成,但只想知道我的第一个答案是怎么回事。

public String front22(String str) {
    if(str.length() > 2){
    return str.substring(0,2) + str + str.substring(0,2);
}

  return str + str + str;
}

最佳答案

这是字符的 ascii 总和:
对于第一种情况,i 有 ascii 105k 有 ascii 107 所以它们的总和是 212
尝试使用 str.subString(0, 2) 而不是添加 char 变量。

关于java - char + String 给出奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28549976/

相关文章:

java - 如何使我的 J2EE Web 应用程序脱机工作?

java - 使用 ANT 运行我的应用程序时,找不到 XPath 实现

java - 如何创建和编写包含 "Document"(XOM) 内容的 XML

自动增长并可重复使用的 Java Char Buffer

c - 哪个效率更高 : char str[] or char *str?

java - 如何以通用方式获取 SQL 的行分隔符?

java - 逐行将文本文件的整行存储在数组中(不是逐字;包括空格)

c - 如何在 C 中解析带引号的 .csv 文件

c++ - 为什么使用字符串初始化的 C++ 位集会被反转?

c++ - 如何将多个字符组合成一个字符串?