如何在Java中打印String的中间三个字符?

Lea*_*ava 1 java string substring

我是编程和处理Java String分配的新手.问题是:

  1. 声明一个名为middle3的String类型的变量(将您的声明与其他声明放在程序顶部附近)并使用赋值语句和子串方法为中间3分配由短语的中间三个字符组成的子字符串(中间的字符)索引与该左侧的字符和右侧的字符一起索引.添加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);
Run Code Online (Sandbox Code Playgroud)

这是我的输出:

Original phrase: This is a String test.
Length of the phrase: 18 characters
middle3:  S
Run Code Online (Sandbox Code Playgroud)

我还认为字符串"短语"中有18个字符,但如果没有,请告诉我.提前感谢您的帮助!

Chr*_*ong 5

考虑如何在不对substring()方法的边界进行硬编码的情况下检索中间3个字符.您可以length()在这方面使用该方法.例如,奇数长度的字符串的中间字符总是会在索引str.length()/2,而偶数长度的字符串的两个中间的字符将永远在索引str.length()/2(str.length()/2) - 1.所以三个中间字符的定义将取决于你.但是对于我们的缘故,我们只是在做索引3级中间人物(str.length()/2)-1,str.length()/2(str.length()/2)+1.有了这些信息,您可以修改以前的这行代码,

middle3 = phrase.substring (9, 11);
Run Code Online (Sandbox Code Playgroud)

middle3 = phrase.substring (phrase.length()/2 - 1, phrase.length()/2 + 2);
Run Code Online (Sandbox Code Playgroud)

至于为什么以前的原始代码行只返回一个字母,它与substring方法的参数有关.第一个参数是包含的,但第二个参数不是.因此,您只检索9到10之间的字符.

This is a String test.
         ^^^
        9,10,11 (11 is not included)
Run Code Online (Sandbox Code Playgroud)

我指出的三个字符分别位于索引9,10和11.你只检索了字符''和'S',它们只是"S".这解释了之前的单字母输出.