首页 > 解决方案 > 您如何修复此代码,以便如果用户输入大写或小写字母,只要它是正确的字母,他们就会被告知它的索引:

问题描述

在这段代码中,用户猜出 3 次姓名中的字母,然后用户可以猜出实际姓名。有谁知道如何修复此代码,以便如果用户输入“m”,即使名称以大写 M 开头,他们仍然会被告知其位置在哪里?

//import java scanner
import java.util.Scanner;

//declare variables
class Main 
{
  Scanner scan = new Scanner(System.in);
  String name = "Matt";
  String guessedName;
  int nameLength, position, guesses;
  char guess;
  
  //method for guessLetter
  public void guessLetter()
  { 
    nameLength = name.length();
    System.out.println("The name I am thinking of is " + nameLength + " letters long.\nYou will be able to pick three letters and I'll let you know the location  letter occurs in the name. Then you can guess the name.");
    guesses = 3;
    while(guesses >= 1)
    {
      System.out.println("Guess one letter?");
      guess = scan.nextLine().charAt(0);
      letters();
      guesses -= 1;
    }
  
  }

  //method for guess Name
  public void guessedName()
  {
    System.out.println("Guess what you think the name is?");
    guessedName = scan.nextLine();
    if(guessedName.equalsIgnoreCase(name)){
      System.out.println("Correct, that is the name!");
    }
    else{
      System.out.println("Wrong, that is not the correct name.");
      System.out.println("The name is " + name + ".");
    }
  }

  //method for letters
  public void letters()
  {
    if(name.indexOf(guess)>-1)
    {
      position = name.indexOf(guess);
      System.out.println(guess + " is at position " + position + ".");
    }
    else
    {
      System.out.println(guess + " is not in the name!");
    }
  }

  
  public static void main(String[] args) 
  {
    Main prog = new Main ();
    prog.guessLetter();
    prog.guessedName();
  }
}

标签: javastringchar

解决方案


只需在循环中检查字符。就是indexOf这样。像这样的东西。

public void letters() {
    String[] chars = name.split("");
    for (int i = 0; i < chars.length; i++) {
       if(chars[i].equalsIgnoreCase(guess)) {
           System.out.println(guess + " is at position " + i + ".");
           return;
       }
    }
    System.out.println(guess + " is not in the name!");
}

推荐阅读