Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.
Закрыт 2 года назад.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class DoIKnow {
int[] location;
int win = 0;
void setLocation(int[] myArray) {
location = myArray;
}
String getInput(String promt) {
String inputLine = null;
System.out.print(promt + " ");
try {
BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
inputLine = is.readLine();
if(inputLine.length() == 0)
return null;
} catch(IOException e) {
System.out.println("IOExpetion: " + e);
}
return inputLine;
}
String check(String guess) {
String result = "Мимо";
int number = Integer.parseInt(guess);
if(location[number] == 1) {
result = "Попал";
win++;
location[number] -= 1;
}
if(win == 3) {
result = "Потопил";
}
return result;
}
public static void main(String[] args) {
int numOfGuesses = 0;
String result;
DoIKnow game = new DoIKnow();
int rand = (int) (Math.random()*5);
int[] arr = new int[7];
for(int s = 0; s < 3; s++) {
// цикл для того, чтобы присвоить индексу[rand]
// и двум индексам перед ним значение 1
arr[rand+s] = 1;
}
game.setLocation(arr);
while(true) {
result = game.getInput("Введите число");
result = game.check(result);
numOfGuesses++;
if(result.equals("Потопил")) {
System.out.println("Вам потребовалось " + numOfGuesses + "попыток(и)");
break;
}
}
}
}
Ожидаемый результат (примерно):
Пользователь вводит число, если он угадывает (индекс, хранящий значение 1), то возвращает "Попал", если возвращается "Потопил", то код выходит из цикла и показывается, сколько попыток понадобилось
я исправил программу. Полный исходник ты можешь найти в конце ответа Во первых пише чише, более красиво( https://habr.com/ru/post/112042/ ) Что я исправил?
1)Проверку на ноль
do
{
result = game.getInput("Введите число");
}
while(result == null || result.isEmpty());
2)Программа не обрабала цифры больше 7.
do
{
inputLine = is.readLine();
if(inputLine.length() == 0) return null;
if(Integer.parseInt(inputLine)>=7)
{
System.out.println("Привет, я программа. Нужно ввести меньше цыфры семь, \nпотому что цыфры больше 7 я не умею обрабатывать,\n так как в меня не добавили такой функционал\n ");
System.out.println("Введите число: ");
}
}
while(Integer.parseInt(inputLine)>=7);
3) Добавить проверку на ввод, что ввели именно цифры,а не строку.
4) Формулируй более четко вопрос, что именно неправильно выполняется в коде.
Добавляю как html код, т.к. не могу добавить как Java code Исправленый код:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
int[] location;
int win = 0;
void setLocation(int[] myArray) {
this.location = myArray;
}
String getInput(String promt) throws java.io.IOException {
String inputLine = null;
boolean input_right = true;
BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
do {
System.out.print(promt + " ");
inputLine = is.readLine();
input_right = check_input_for_match_of_format_if_all_okey_return_false(inputLine);
} while (input_right);
return inputLine;
}
private boolean check_input_for_match_of_format_if_all_okey_return_false(String inputLine) {
if (inputLine.replaceAll(" ", "").length() == 0) {
System.out.println("You can't input empty space");
return true;
}
// check for letters
Pattern pattern = Pattern.compile(".*[a-zA-Z]+.*");
Matcher matcher = pattern.matcher(inputLine);
if (matcher.matches()) {
System.out.println("You can't input letters");
return true;
}
// ...
if (Integer.parseInt(inputLine) >= 7) {
System.out.println("You can't input numbers more than 6");
return true;
}
return false;
}
String check(String guess) {
String result = "Мимо";
int number = Integer.parseInt(guess);
if (location[number] == 1) {
result = "Попал";
win++;
location[number] -= 1;
}
if (win == 3) {
result = "Потопил";
}
return result;
}
public static void main(String[] args) throws java.io.IOException {
Main main = new Main();
main.start();
}
public void start() throws IOException {
// initialize variables
int numOfGuesses = 0;
String result;
int[] arr = generate_new_array();
// ...
Main game = new Main();
game.setLocation(arr);
while (true) {
result = game.getInput("Введите число");
result = game.check(result);
numOfGuesses++;
if (result.equals("Потопил")) {
System.out.println("Вам потребовалось " + numOfGuesses + "попыток(и)");
break;
}
}
}// end method
private int[] generate_new_array() {
int[] arr = new int[7];
int rand = (int) (Math.random() * 5);
for (int s = 0; s < 3; s++) {
arr[rand + s] = 1;
}
return arr;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Суть задачи: дана строкаИз неё нужно сделать палиндром (когда слово читается одинаково и с начала и с конца) минимально возможной длины
Есть два класса EJPlayer (Интерфейс) и EPlayer (Дочерний)
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском