Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何告诉用户他们';我以前用indexOf输入过一封信?JAVA_Java_String_If Statement_Char_Indexof - Fatal编程技术网

我如何告诉用户他们';我以前用indexOf输入过一封信?JAVA

我如何告诉用户他们';我以前用indexOf输入过一封信?JAVA,java,string,if-statement,char,indexof,Java,String,If Statement,Char,Indexof,当用户输入一封信时,它每次都会被添加到新闻字符串中。如果用户多次输入同一个字母,如何返回错误消息 例如,用户输入:a,b,然后是c 然后newString=“abc” 我只是不知道如何检查用户是否已经输入了一封信。 例如,如果他们再次输入,它将返回一条错误消息 以下是我目前掌握的情况: if (newString.indexOf(input) != -1 ) { System.out.println( "Invalid" ); } 我想象它会工作,因为它正在查看新闻字符串以获取输入,如

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

例如,用户输入:
a
b
,然后是
c
然后
newString=“abc”

我只是不知道如何检查用户是否已经输入了一封信。 例如,如果他们再次输入,它将返回一条错误消息

以下是我目前掌握的情况:

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

我想象它会工作,因为它正在查看
新闻字符串
以获取输入,如果它不在那里,它将返回
-1
如果我正确理解了您的问题,我相信您可以使用字符串
包含
方法来检查字母。应该是这样的:

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

使用
包含

String s = "helo";

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

试试这个

公共静态void main(字符串[]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();
    }
}

每次用户输入字符时,请对照
字符串中的现有字符检查该字符。因此,每次用户输入字符时,请执行以下操作:

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

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

你能包括设置了
newString
的部分吗?尝试时会发生什么?newString=newString+input;
newString.indexOf(letter)!=-1
效果很好。这可能不是这里的问题。仅供参考:contains的源代码是
return indexOf(s.toString())>-1;
好的我有:if(newString.contains(input))但它只是返回它,就好像它甚至没有检查字符串是否包含输入的字母一样?@user3096470请编辑您的原始问题并添加您用于该类的所有代码,因为您的问题似乎不仅仅是字符串比较。当我尝试此操作时,它对输入的每个字符都返回无效?n的初始值是多少ewString和什么是被操纵的值??String newString=“”;newString=newString+input;在这里工作正常..您输入了什么作为输入??您是在if条件之前还是之后追加输入字符串???>'newString=newString+input;'
包含()
使用
索引()
内部。使用一种方法而不是另一种方法应该不会有什么区别。当我使用此方法编译时,它会说“找不到符号-可变长度”?对不起,应该使用方法
length()