为什么这两种方法在单个print语句中无法正常工作?

时间:2016-12-14 01:07:45

标签: java methods

当我尝试使用两种方法时,我使用两种内置方法 charAt() getNumericValue()来获取字符串的字符及其数值同一个println()中的方法给我一个不正确的结果但是当我把它们放在单独的打印方法中时它们工作正常。虽然我的例子有效但我很好奇为什么会这样?

这会得到正确的结果

<button>first</button></button>second</button>

这不是

            {
                // dataStream is a String taken from the user. e.g. "Ninja"
                // Take in dataStream, calculate the value of each character.
                for ( int i = 0; i < dataStream.length() ; i++ )

                    {
                        System.out.print ( dataStream.charAt(i) ) ; // Print the Character at i,
                        System.out.print( Character.getNumericValue ( dataStream.charAt(i) ) ) ;    // Print the value of the character at i.
                        System.out.println ( " ") ; // Tidy
                    }


            }

4 个答案:

答案 0 :(得分:2)

  

当我尝试在同一个println()中使用这两个方法时,它给出了一个不正确的结果,但当我将它们放在单独的打印方法中时,它们工作正常。

这是因为在第二种方法中,由于+内的println()运算符,您将逐字母打印“忍者”的ascii值和int值之和。

您可以通过在字符前附加字符串文字来克服这个问题:

System.out.print ("" + dataStream.charAt(i) + Character.getNumericValue ( dataStream.charAt(i)));

答案 1 :(得分:2)

由于+仅在其中一个元素为String时才作为连接使用,因此您拥有的是charint值。

因此,它将char提升(转换)为int,添加两个数字,这就是它打印的内容。

你可以:

  • 将char(Character.toString(char))和int(Integer.toString(int))或其中之一转换为String。

  • 在中间dataStream.charAt(i) + "" + Character.getNumericValue(dataStream.charAt(i))添加一个字符串。它将被分解为(dataStream.charAt(i) + "") + Character.getNumericValue(dataStream.charAt(i))。第一部分将评估为字符串连接(因为“”),其余部分将也是字符串连接(因为第一部分的结果将是一个字符串)。作为附带好处,请使用空格或符号分隔两个值。

答案 2 :(得分:1)

这是因为+运算符的行为取决于给定的类型。这应该可以让你知道发生了什么:

System.out.println(charType + charType);    //Addition occurs
System.out.println(intType + charType);     //Addition occurs
System.out.println(StringType + charType);  //Concatenation occurs
System.out.println(charType + StringType);  //Concatenation occurs
System.out.println(StringType + intType);   //Concatenation occurs
System.out.println(intType + StringType);   //Concatenation occurs

System.out.println('A' + 'A');       //prints 130 (65+65)
System.out.println(5 + 'A');         //prints 70 (65+5)
System.out.println("" + 'B');        //prints "B"
System.out.println('B' + "");        //prints "B"
System.out.println("" + 7);          //prints "7"
System.out.println(7 + "");          //prints "7"
System.out.println("" + 'A' + 'B');  //prints "AB"

答案 3 :(得分:0)

Character.getNumericValue() method返回类型 int type charAt()返回字符类型

然后char type添加int type的值返回值int type