我是编程和处理 Java String 赋值的新手。问题是:
- 声明一个名为 middle3 的 String 类型的变量(将您的声明与其他声明放在程序顶部附近)并使用赋值语句和 thesubstring 方法将由 phrase 中间三个字符组成的子字符串赋给 middle3(字符在中间索引以及左边的字符和右边的字符)。添加 println 语句以打印出结果。保存、编译并运行以测试您到目前为止所做的工作。
这是我所做的:
String phrase = new String ("This is a String test.");
String middle3 = new String ("tri"); //I want to print the middle 3 characters in "phrase" which I think is "tri".
middle3 = phrase.substring (9, 11); // this only prints out 1 letter instead of 3
System.out.println ("middle3: " + middle3);
这是我的输出:
Original phrase: This is a String test.
Length of the phrase: 18 characters
middle3: S
我也认为字符串“phrase”中有 18 个字符,但如果没有,请告诉我。预先感谢您的所有帮助!
最佳答案
想想如何在不对 substring()
方法的边界进行硬编码的情况下检索中间的 3 个字符。您可以在这方面使用 length()
方法。例如,奇数长度的字符串的中间字符将始终位于索引 str.length()/2
,而偶数长度的字符串的两个中间字符将始终位于索引 str.length()/2
和 (str.length()/2) - 1
。因此,三个中间字符的定义将由您决定。但为了我们的利益,我们将只在索引 (str.length()/2)-1
, str.length()/2
,和 (str.length()/2)+1
。有了这些信息,你就可以修改你之前的这行代码了,
middle3 = phrase.substring (9, 11);
到
middle3 = phrase.substring (phrase.length()/2 - 1, phrase.length()/2 + 2);
至于你原来的那行代码为什么只返回一个字母,跟substring
方法的参数有关。第一个参数是包容性的,但第二个参数不是。因此,您只检索了从 9 到 10 的字符。
This is a String test.
^^^
9,10,11 (11 is not included)
我指向的三个字符分别位于索引 9、10 和 11。您只检索到字符“”和“S”,它们加起来就是“S”。这解释了之前的一个字母输出。
关于java - Java中如何打印String的中间三个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39692076/