2015-10-06 23 views
0

例如,我会从用户那里得到一个未指定数量字符的输入并将它们添加到一个字符串中,然后我使用if input1.toLowerCase().startsWith(input2.toLowerCase()))来检测这两个字符串的第一部分是否相同。在这种情况下,input1input2都是用扫描仪拾取的字符串。如何获取Java中的一部分字符串并打印出来?

如何打印每个字符串的相同部分?

例如,如果我输入“大家好,我的名字是”为input1和“大家好,我的名字”为input2,它应该输出“嗨,我的名字”

编辑:为了澄清,我转换字符串为小写和然后尝试比较两个与startsWith外壳不会在这个问题无关紧要

+1

你只需要打印输入2,因为这是两者之间的共同点,因为你的条件使用了startsWith()。 –

回答

2

从两个字符串找到最大的起始字符串,则需要单独测试每一个字符:

int i; 
for (i = 0; i < str1.length() && i < str2.length() && str1.charAt(i) == str2.charAt(i); i++); 
String common = str1.substring(0, i); 
+0

好吧,这实际上大部分工作_except_当第一个字符串比第二个字符串长(它敲掉一个字母)。我实际上可以抵消它来修复它,但它为什么这样做呢? –

+1

@ Nero-One(错误更正 - 请参阅最新编辑)适用于我:如果我设置了'String str1 =“abcde”; String str2 =“abc”;'result是'“abc”' – Bohemian

0

你的逻辑应该以这种方式流:

  • 首先检查是否输入1和输入2是相同的
  • 然后检查输入1 startsWith输入2
    • 如果为真,然后打印输入2
    • 否则,检查是否它周围的其他方法(输入2 startsWith输入1)
      • 如果为真,那么你就应该打印输入1

尝试创建此代码自己 - 它的学习编码的最好方法:试验和错误!请记住,这是软件编程 - 当遇到Java编译器错误时,没有任何东西会炸毁。

相关问题