#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; }