我创建了一个数组并将其打乱。现在,我想将用户输入与数组中的项目进行比较,以返回发生输入的所有索引。通过此线程的帮助,我能够返回输入发生的第一个索引:find substring index in array using Java现在,使用循环,我想找到发生输入的所有索引(如果有多个索引)。然而,我的输出很古怪。我对此很陌生,通过阅读 Java API 没有取得任何进展。
import java.lang.Math;
import java.util.Scanner;
import java.util.Arrays;
import java.util.List;
import java.util.Collections;
import java.util.ArrayList;
public class ArrayRandomChar {
public static void main(String[] args) {
// Create an array of characters:
Character[] anArray = {'P', 'A', 'P', 'A', 'B', 'E', 'A', 'R'};
for (char ch: anArray)
System.out.print(ch + " ");
System.out.println();
List<Character> aList = Arrays.asList(anArray);
Collections.shuffle(aList);
System.out.print(aList);
System.out.println();
Object ob[] = aList.toArray();
for (Object ch: anArray)
System.out.print((Character) ch + " ");
System.out.println();
System.out.println("This program initializes a secret word or phrase to be guessed by you!");
System.out.println("Enter an uppercase letter to return all indexes where it occurs in scrambled string: ");
Scanner input = new Scanner(System.in);
String letter = input.next();
System.out.println(letter);
System.out.println(Character.toUpperCase(letter.charAt(0)));
List<Integer> myList = new ArrayList<Integer>();
int i;
//Loop to find index of inputted character
for (i = 0; i < anArray.length; i++){
Character ch = new Character(anArray[i]);
if (Character.toUpperCase(letter.charAt(0)) == ch) {
int index = aList.indexOf(Character.toUpperCase(letter.charAt(0)));
myList.add(index);
}
}
System.out.println(myList);
}
}
实际输出:
run ArrayRandomChar P A P A B E A R [E, A, A, R, P, A, B, P] E A A R P A B P This program initializes a secret word or phrase to be guessed by you! Enter an uppercase letter to return all indexes where it occurs in scrambled string: [DrJava Input Box] A A [1, 1, 1]
期望的输出:
run ArrayRandomChar P A P A B E A R [E, A, A, R, P, A, B, P] E A A R P A B P This program initializes a secret word or phrase to be guessed by you! Enter an uppercase letter to return all indexes where it occurs in scrambled string: [DrJava Input Box] A A [1, 2, 5]
最佳答案
Character ch = new Character(anArray[i]);
而不是
Character[] ch = new Character(anArray[i]);
new Character()
将创建Character 而不是Character[]
和
同时更改以下行。
if (Character.toUpperCase(letter.charAt(0)) == ch) {
而不是
if (Character.toUpperCase(letter.charAt(0)).equals(ch) == True) {
因为 .toUperCase
的返回值应该是一个原始字符,所以没有 .equals
方法,您可以使用 ==
进行简单检查>
关于java - 比较不同类型的项目--用户输入和索引返回(使用Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22827066/