如何告诉用户他们之前使用 indexOf 输入了一个字母? JAVA

Posted

技术标签:

【中文标题】如何告诉用户他们之前使用 indexOf 输入了一个字母? JAVA【英文标题】:How do I tell user that they've previously entered a letter with 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+ 输入; 【参考方案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()的方法。

以上是关于如何告诉用户他们之前使用 indexOf 输入了一个字母? JAVA的主要内容,如果未能解决你的问题,请参考以下文章

如何确定 HTML 用户输入的高度和宽度并告诉 gridster 相应地适应?

android studio 2018.3.20 用户输入

autocomplete = new-password并通过再次输入密码让他们确认

如何在条件语句中结束emitter.on

在用户不断输入之前如何运行程序?

我如何告诉我所有的自动布局约束来更新自己? (例如,当用户更新他们的系统大小/动态类型时)?