Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как исправить ошибку в java коде

Danil Shishcov Ученик (97), на голосовании 3 года назад
Несколько дней назад начал изучать программирование на java. До этого знаком с Python. Решил проверить свои недавно приобретенный знания, и написать на java простые крестики-ноликию. спустя всего 60 строчек кода, поймал неправильное выполнение логики кода компилятором. вместо генерации рандомного числа (для определения хода компьютера) он изменял доску игры. если кто то шарит в java, посмотрите что не так пожалуйста. Вот код:

package com.company;

import java.util.Scanner;
import java.lang.Math;

public class Main {

public static void main(String[] args) {

//описание игры
System.out.println("");
System.out.println("Запущенна игра 'крестики нолики'");
System.out.println("1 - крестик, 2 - нолик");
System.out.println("Чтобы сделать свой ход, укажите координаты нужной вам клетки");
System.out.println("поочереди с верху в низ (от 0 до 2) и с лева на право (от 0 до 2)");

// двумерный массив с доской игры
int[][] show1 = new int[][]{{0, 0, 0},
{0, 0, 0},
{0, 0, 0}};

while (true){
//выводим поле игры
for (int i = 0; i < 3; i++){
for (int k = 0; k < 3; k++){

System.out.print(show1[i][k] + " ");
}
System.out.println("");
}
//запрашиваем ход игрока
System.out.print("ваш ход: ");
Scanner xod1 = new Scanner
(System.in);
int xod = xod1.nextInt();

// комп ходит
// не успел сделать хоть какой-нибуть алгоритм
// и уже поймал ошибку
int comp1 = (int) getRandom(1, 3);

int comp2 = (int)getRandom(0, 2);
System.out.print(comp1 + " " + comp2);// для проверки генерируемых данных

}
}
//генератор псевдо рандомных чисел (не нашел инфу как сделать полностью случайные числа)
public static double getRandom(int min, int max) {
double x = (int)(Math.random()*((max-min)+1))+min;

return (int)x;

}
}
Дополнен 4 года назад
Mail.ru Не дал коректно напечатать код
Дополнен 4 года назад
https://ru.stackoverflow.com/questions/1104061/как-исправить-ошибку-в-java-коде
ссылка на правильно составленный вопрос
Голосование за лучший ответ
user49912 Оракул (51202) 4 года назад
1. Компилятор не выполняет логику, компилятор перегоняет текст в байткод для JVM, которая и выполняет логику.
2. У меня на машине программа работает ровно так, как должна работать. Что у тебя указывает на "неправильное выполнение логики компилятором"?
Danil ShishcovУченик (97) 4 года назад
я еще не начал делать изменение доски игры (реализацию хода), но компьютер вместо того чтобы сначала просто задать переменной случайное число изменял игровое поле.

0 0 0 | 1 20 0 | 3 10 0 | 2 10 0
0 0 0 | 0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0 | 0 0 0

и так далее
user49912 Оракул (51202) Компьютер не изменял игровое поле, он просто вывел два сгенерированных значения без перевода строки (ибо print, а не println), и сразу за ними поле, всё ещё состоящее из одних нулей. В данном случае мы имеем скорее неправильное написание логики программистом.
Алексей Хвостовский Мудрец (18112) 4 года назад
"не нашел инфу как сделать полностью случайные числа"

Найдешь - обязательно дай знать!
Похожие вопросы