Как умножить разные индексы на разные значения?

#java

Вопрос:

Я создаю игру в скрэббл, в которой персонажи получают те же значения, что и скрэббл, (q amp; z =10), (k=5) и т. Д., И основная проблема, с которой я сталкиваюсь, заключается в том, что я прошу пользователя ввести 2 знака после слова, первый из которых является индексом бонусной плитки, а второй-множителем для умножения слова. Значение без множителя правильное, но множитель не работает.

 public class Main {   public static void main(String[] args) {  Scanner kb = new Scanner(System.in);  String word = kb.next();  int bonusI = kb.nextInt();  int bonusMult = kb.nextInt();  int score=0;  for (int i=0; ilt;word.length();i  ){  int letterScore;  String letter=word.substring(i,i 1);  if (letter.equals("d")||letter.equals("g")){  letterScore=2;  }  else if (letter.equals("k")) {  letterScore=5;  }  else if (letter.equals("j")||letter.equals("x")){  letterScore=8;  }  else if (letter.equals("q")||letter.equals("z")) {  letterScore=10;  }  else {  letterScore=1;  }     for (int j=0;jlt;1;j  ){  if (word.substring(i,i 1).equals(bonusI)){  letterScore*=bonusMult;  }  }     score =letterScore;    }  System.out.println(score);   } }  

Например, если ввод 2 3, то правильный вывод будет 9, (d-2 балла, o в соответствии с scrabble-1 балл, а g-2 балла, но так как 1-й ввод был 2, а g имеет индекс 2, он затем умножается на бонус 3, что составляет g=6, добавляя их 2 1 6=9) но вместо этого мой результат равен 5, потому что множитель для g не работает.

Ответ №1:

Похоже, здесь вы ошиблись.

 word.substring(i,i 1).equals(bonusI)  
  • word.substring(i,i 1) есть String и дает одно письмо
  • bonusI int является и определяет одно число

Этого никогда не будет true

Комментарии:

1. спасибо за вашу помощь

Ответ №2:

если (слово.подстрока(i,i 1).равно(bonusI)) — Это условие всегда будет ложным, так как вы не можете сравнить строку со значением int.

Вместо этого вы можете просто заменить внутренний цикл for на приведенный ниже код

 if (bonusI == i) {  letterScore*=bonusMult; }