Конечное целочисленное значение в этом коде всегда неверно - помогите!
package com.company; import java.util.Scanner; class PP1CourseWork2 { static int dieRoll() { int roll1 = (int) (Math.random() * 1000 % 6 + 1); int roll2 = (int) (Math.random() * 1000 % 6 + 1); int roll3 = (int) (Math.random() * 1000 % 6 + 1); int tot = roll1 + roll2 + roll3; return tot; } static void AddBonus(int myValue, int bonus, String keywordx) { //Using a method to avoid rewriting codes for each and every variable if (myValue == 10 || myValue == 11){ System.out.println(keywordx + " : " + "[" + myValue + "]" + "[0]"); } else if (myValue > 11) { bonus = (myValue-10)/2; System.out.println(keywordx + " : " + "[" + myValue + "]" + "[+" + bonus + "]"); } else { bonus = (11 - myValue)/2; System.out.println(keywordx + " : " + "[" + myValue + "]" + "[-" + bonus + "]"); } } public static void main(String[] args) { int str =0; //Initialization of all variables... int dex=0; //...where dex = Dexterity int cha=0; //cha = Charisma int con=0; //con = Constitution int wis=0; //wis = Wisdom int inte=0; //inte = Intelligence int strBonus=0; //Initialization of bonuses corresponding to each variable int dexBonus=0; int chaBonus=0; int wisBonus=0; int inteBonus=0; int conBonus=0; int HP=0; //Initialization of HP and level int level=0; String choice = null; //Initialization of the String value - choice, where user decides to reroll or print their stats. Scanner sc = new Scanner(System.in); System.out.println("Enter Level: "); level = sc.nextInt(); System.out.println("Level :" + "[" + level + "]"); do { str = dieRoll(); dex = dieRoll(); cha = dieRoll(); con = dieRoll(); wis = dieRoll(); inte = dieRoll(); AddBonus(str, strBonus, "Str"); //calling the AddBonus method for each and every variable. AddBonus(dex, dexBonus, "Dex"); AddBonus(con, conBonus, "Con"); AddBonus(inte, inteBonus,"Int"); AddBonus(wis, wisBonus, "Wis"); AddBonus(cha, chaBonus, "Cha"); HP = (int) ((Math.random() * 1000 % 6 + 1) + (conBonus * level)); System.out.println("HP :" + "[" + HP + "]"); System.out.println("If you wish to re-roll, type R."); System.out.println("If you wish to print these stats as they are, type any other character."); choice = sc.next(); } while (choice.equals("r") || choice.equals("R")); AddBonus(str, strBonus, "Str"); AddBonus(dex, dexBonus, "Dex"); AddBonus(con, conBonus, "Con"); AddBonus(inte, inteBonus, "Int"); AddBonus(wis, wisBonus, "Wis"); AddBonus(cha, chaBonus, "Cha"); System.out.println("HP :" + "[" + HP + "]"); } }
Итак, вот он - мой собственный код для вычисления атрибутов DnD, основанный на рекомендациях моего лектора, - на самом деле задание. Однако, хотя код почти идеален с точки зрения руководящих принципов - значение хитпоинтов или HP - всегда неверно, и я не могу понять, почему это так. Предполагается, что это значение случайного числа между 1-6 + (уровень*conBonus), но даже если мой уровень равен миллиону, он всегда возвращает число между 1-6 - в основном 2 или 3. Есть какие-нибудь проблемы, которые может увидеть кто-то, кроме меня?
Что я уже пробовал:
Я пробовал отлаживать построчно, но, похоже, не могу найти ошибку.