java - 比较不同类型的项目--用户输入和索引返回(使用Java)

标签 java arrays

我创建了一个数组并将其打乱。现在,我想将用户输入与数组中的项目进行比较,以返回发生输入的所有索引。通过此线程的帮助,我能够返回输入发生的第一个索引: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/

相关文章:

java - 向表中添加新行时向下移动 JTable 行

java - 如何强制 spring 为每个用户使用相同的 i18n Locale

java - java 和 .net 应用程序之间的身份验证

java - 错误插件: "org.eclipse.text" in eclipse 4. 3

java - 如何将类中的属性与字符串进行比较?

c - 使用指针和数组时出现奇怪的结果

python - Numpy数组切片转置内部数据

java - 尝试..捕获场景

arrays - 如何在VBA中将文本文件读取到数组中

c - 我们如何将整个段落作为二维数组中的输入作为单独的行?