【问题标题】:How to print out specific letters within a String in Java [duplicate]如何在Java中打印出字符串中的特定字母[重复]
【发布时间】:2016-07-17 18:24:33
【问题描述】:

我的任务是打印出字符串变量中名称的第二个、第三个和第四个字母。

例如,名字是 John,我想打印出字母 'o、h 和 n only'

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

【问题讨论】:

  • 考虑 String 类的 .charAt() 方法,并使用适当初始化的循环。 String 的 substring() 方法也是一种可能。阅读 String 类中的 javadocs。
  • java有很多文档javadocs你通常可以不费吹灰之力找到你想要的。 substring
  • System.out.println(variable.substring(1));
  • 您需要先自己尝试一下,然后发布您的代码。

标签: java


【解决方案1】:

您可以通过在 String 上使用 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)));     
    }
}

【讨论】:

  • 这可以工作,但它很冗长且难以维护。此外,它将打印在堆叠的列中,而不是在同一行上。 (需要使用 print 而不是 println)。
  • @KevinO 代码已编辑以满足您的关注。我们必须检查长度以避免 StringIndexOutOfBoundsException
  • 是的,StringIndexOutOfBounds 是一个问题。但是考虑if (input != null && input.length() > 1) { System.out.println(input.substring(1, Math.min(input.length(), 4))); }。只需保证长度大于一即可。
  • @KevinO 好一个。我喜欢你的解决方案。
  • @KevinO 我已将您的建议应用于答案,谢谢。
【解决方案2】:

EDIT 正如@KevinO 指出的那样,确定名称长度或 4 是否更小可以解决可能导致异常的问题。我更新以合并此输入。

取决于您如何尝试打印它。您可以使用for 循环并从String name 的第一个索引开始迭代,如下所示:

String name = "John";
for(int i = 1; i < Math.min(name.length(), 4); i++){
    System.out.print(name.charAt(i));
}

示例运行:

运行:

构建成功(总时间:0 秒)

您可以一次打印出Character,例如:

System.out.print(name.charAt(1)); //print character at index 1
System.out.print(name.charAt(2)); //print character at index 2
System.out.print(name.charAt(3)); //print character at index 3

这可能不安全,因为您不确定该名称实际上是否至少有 4 个Characters 长。 示例运行:

运行:

构建成功(总时间:0 秒)

或者也许是最简单且安全的方法,您可以使用String.substring() 将其打印出来,其中包含一个范围,如下所示:

    System.out.println(name.substring(1, Math.min(name.length(), 4)));

这会导致:

运行:

构建成功(总时间:0 秒)

【讨论】:

  • .substring(1, Min(name.length(), 4)) 避免了字符串长度的最后一个问题。如果我正确阅读了问题,第一个解决方案不会停在第三个打印字符(它有 name.length() 但问题只是字符 2,3,4)。
  • @KevinO,对,将您的意见纳入我的回答中。谢谢!
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 2017-09-25
    • 2021-06-05
    • 1970-01-01
    • 2020-03-25
    相关资源
    最近更新 更多