如何在Java中打印字符串中的特定字母

如何在Java中打印字符串中的特定字母,java,Java,我被设置了一项任务,打印出字符串变量中名称的第二、第三和第四个字母 例如,名字是John,我只想打印字母“o,h和n” 我想知道是否有一种特定的方法可以用来执行这项任务,如果没有,最好的方法是什么?您可以通过在字符串上使用charAt函数来实现这一点。以下版本的代码应该满足您的要求 public static void main(String[] args) { String input = "John"; if (input != null && input.l

我被设置了一项任务,打印出字符串变量中名称的第二、第三和第四个字母

例如,名字是John,我只想打印字母“o,h和n”


我想知道是否有一种特定的方法可以用来执行这项任务,如果没有,最好的方法是什么?

您可以通过在字符串上使用charAt函数来实现这一点。以下版本的代码应该满足您的要求

public static void main(String[] args) {
    String input = "John";
    if (input != null && input.length() > 1) { 
               System.out.println(input.substring(1, Math.min(input.length(), 4)));     
    }
}

您可以通过对字符串使用charAt函数来实现这一点。以下版本的代码应该满足您的要求

public static void main(String[] args) {
    String input = "John";
    if (input != null && input.length() > 1) { 
               System.out.println(input.substring(1, Math.min(input.length(), 4)));     
    }
}

假设名称中始终包含至少4个字母,则此代码将起作用:

public static void main(String[] args) {
    String name = "JOHN";
    System.out.println(name.substring(1,4));
}

假设名称中始终包含至少4个字母,则此代码将起作用:

public static void main(String[] args) {
    String name = "JOHN";
    System.out.println(name.substring(1,4));
}

EDIT正如@KevinO所指出的,确定名称长度是小于4可以解决可能导致异常的问题。我更新了这个输入

取决于你如何打印它。您可以使用
for
循环,并从
字符串名称的第一个索引开始迭代,如下所示:

String name = "John";
for(int i = 1; i < Math.min(name.length(), 4); i++){
    System.out.print(name.charAt(i));
}
这可能不安全,因为您不确定名称实际上是否至少有4个
字符。
样本运行:

运行:
ohn
生成成功(总时间:0秒)

或者,也许是最简单也是安全的方法,您可以使用
String.substring()
将其打印出来,其取值范围如下:

    System.out.println(name.substring(1, Math.min(name.length(), 4)));
这导致:

运行:
ohn
生成成功(总时间:0秒)


EDIT正如@KevinO所指出的,确定名称长度是小于4可以解决可能导致异常的问题。我更新了这个输入

取决于你如何打印它。您可以使用
for
循环,并从
字符串名称的第一个索引开始迭代,如下所示:

String name = "John";
for(int i = 1; i < Math.min(name.length(), 4); i++){
    System.out.print(name.charAt(i));
}
这可能不安全,因为您不确定名称实际上是否至少有4个
字符。
样本运行:

运行:
ohn
生成成功(总时间:0秒)

或者,也许是最简单也是安全的方法,您可以使用
String.substring()
将其打印出来,其取值范围如下:

    System.out.println(name.substring(1, Math.min(name.length(), 4)));
这导致:

运行:
ohn
生成成功(总时间:0秒)


考虑String类的.CARATET()方法,并使用适当初始化的循环。String的substring()方法也是一种可能性。阅读String类中的javadocs。java有很多文档,您通常可以轻松找到所需的内容
System.out.println(变量子字符串(1))首先需要自己尝试并发布代码。考虑String类的.CARATATE()方法,并使用适当初始化的循环。String的substring()方法也是一种可能性。阅读String类中的javadocs。java有很多文档,您通常可以轻松找到所需的内容
System.out.println(变量子字符串(1))你需要自己先尝试一下,然后发布你的代码。这可以工作,但是很冗长,很难维护。此外,它将在堆叠的列中打印,而不是在同一行上打印。(需要使用print而不是println)。@KevinO代码经过编辑以满足您的担忧。我们必须检查长度以避免StringIndexOutOfBounds异常,StringIndexOutOfBounds是一个问题。但是考虑<代码>(输入!= null and &输入,长度())1){St.Out.PrtLn(输入。子字符串(1,Maim.min(输入。长度())));}。只需确保长度大于1即可。@KevinO好的。我喜欢你的解决方案。@KevinO我已经将你的建议应用到了答案中。谢谢。这可以奏效,但它冗长且难以维护。此外,它将在堆叠的列中打印,而不是在同一行上打印。(需要使用print而不是println)。@KevinO代码经过编辑以满足您的担忧。我们必须检查长度以避免StringIndexOutOfBounds异常,StringIndexOutOfBounds是一个问题。但是考虑<代码>(输入!= null and &输入,长度())1){St.Out.PrtLn(输入。子字符串(1,Maim.min(输入。长度())));}。只需确保长度大于1即可。@KevinO好的。我喜欢你的解决方案。@KevinO我已将你的建议应用于答案,谢谢..子字符串(1,Min(name.length(),4))避免了最后一个字符串长度问题。如果我正确阅读了问题,第一个解决方案不会在第三个打印字符处停止(它有name.length(),但问题仅为字符2、3、4)。@KevinO,对,将您的输入合并到我的答案中。谢谢子字符串(1,Min(name.length(),4))避免了最后一个字符串长度问题。如果我正确阅读了问题,第一个解决方案不会在第三个打印字符处停止(它有name.length(),但问题仅为字符2、3、4)。@KevinO,对,将您的输入合并到我的答案中。谢谢