在Java中使用子字符串方法查找字符串变量中的特定字符时出现问题

问题描述 投票:0回答:2

我在尝试使用

substring
方法来查找字符串变量中的特定字符时遇到问题。目前,我已经设置了一个 for 循环来迭代名为
name
的字符串变量的长度。在此循环中,我在 if 语句中使用
substring
方法来搜索由“.”表示的特定字符。

然而,尽管我付出了努力,我还是无法达到预期的结果。对于解决此问题的任何帮助,我将不胜感激。这是我的代码的相关部分:

System.out.println("\nEnter name: ");
String name = in.nextLine();

int length = name.length();

for (int x = 0; x < length; x++) {
    
    if(name.substring(x, x + 1).equals(".")) {
        
        System.out.println("Error! - name cannot contain (.) values\n"
                         + "***************************************************");
        
        System.out.println("\nWould you like to capture another name?" +
        "\nEnter (1) to continue or any other key to exit");
        String opt1 = in.nextLine();

        // If statement to restart the application
        if (opt1.equals("1")) {
            System.out.println("menu launch");
        } else {
            System.exit(0);
        }
    } else {
        break;
    } 
}

如果您能了解我的方法为何未按预期工作以及如何纠正它,我将不胜感激。预先感谢您的协助!

java string substring
2个回答
3
投票

不要重新发明轮子。您可以使用

contains
方法,而不是循环遍历字符串的字符:

if (name.contains(".")) {
    // logic comes here...

0
投票

虽然 Mureinik 在实现目标的最佳方法上是正确的,但你的函数不起作用的原因是你的

else { break; } 
声明。

break
终止循环,因此除非第一个字符是
.
,否则循环将在第一次迭代后立即退出。当您想要增加循环时,正确的关键字是
continue
,尽管在这种情况下没有必要,因为所有逻辑都包含在 if 语句内。由于没有其他逻辑需要避免,因此您应该删除 else 语句。

© www.soinside.com 2019 - 2024. All rights reserved.