【问题标题】:How do I tell user that they've previously entered a letter with indexOf? JAVA如何告诉用户他们之前使用 indexOf 输入了一个字母? JAVA
【发布时间】:2013-12-31 06:38:27
【问题描述】:

当用户输入一个字母时,它每次都会被添加到 newString 中。如果用户多次输入同一个字母,如何返回错误消息?

例如用户输入:ab,然后是c 然后newString = "abc"

我只是不知道如何检查用户是否已经输入了一个字母。 例如,如果他们再次输入 a,它应该返回错误消息。

这是我目前所拥有的:

if (newString.indexOf(input) != -1 ) {
    System.out.println( "Invalid" );
}

我认为它会起作用,因为它正在通过 newString 查找输入,如果不存在,它将返回 -1

【问题讨论】:

  • 能把设置newString的部分加进去吗?
  • 当你尝试时会发生什么?
  • newString = newString+ 输入;

标签: java string if-statement char indexof


【解决方案1】:

如果我正确理解您的问题,我相信您可以使用 String contains 方法来检查一封信。应该是这样的:

if(newString.contains(letter))

【讨论】:

  • newString.indexOf(letter) != -1 工作得很好。这可能不是这里的问题。
  • 仅供参考:包含的源代码是return indexOf(s.toString()) > -1;
  • 好的,我有:if(newString.contains(input)) 但它只是返回它,好像它甚至没有检查字符串是否包含输入的字母?
  • @user3096470 请编辑您的原始问题并添加您用于该课程的所有代码,因为您的问题可能不仅仅是字符串比较。
【解决方案2】:

使用contains

String s = "helo";

if (s.contains(input)){
    // reject
}

if (!s.contains(input)){   // if string does not contain input
    s += input;            // concatenate to string
}

【讨论】:

  • contains() 在内部使用 indexOf()。使用其中一个不应该有所作为。
【解决方案3】:

试试这个

if(newString.indexOf(letter) != -1){
      //Invalid             
}

【讨论】:

    【解决方案4】:

    试试这个

    public static void main(String[] args) 抛出 IOException {

        String newString = "";
        System.out.print("Enter letter: ");
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine().toUpperCase();
        while(true){
        if (newString.contains(input)) 
        { System.out.println( "Invalid" );}
        else
        {
            newString = newString+ input;
        }
        input = br.readLine().toUpperCase();
        }
    }
    

    【讨论】:

    • 当我尝试这个时,它返回 Invalid for each character enter?
    • 什么是newString的初始值,什么是操纵值??
    • String newString="";新字符串=新字符串+输入;
    • 这里工作正常.. 你输入了什么??
    • 您是在 if 条件之前还是之后附加输入字符串? >>'newString=newString+ 输入;'
    【解决方案5】:

    每次用户输入一个字符时,将该字符与String 中的现有字符进行对比。所以每次用户输入一个字符时,做这样的事情:

    for (int i = 0; i < newString.length(); i++) {
        if (newString.charAt(i) == input) {
            System.out.println("Invalid");
        }
        else {
            System.out.println("Valid");
        }
    }
    

    【讨论】:

    • 当我用这个编译时,它说'找不到符号 - 可变长度'?
    • 对不起,应该是length()的方法。
    猜你喜欢
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    相关资源
    最近更新 更多