Изменить это:
for(int e:array) {
System.out.print(e);
}
к этому:
for(char e:array) {
System.out.print(e);
}
вы неявно приводите char к int, которые печатаются как числа, а не как символы.
Ваш код имеет много недостатков, это исправленная версия:
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] words = {"monkey","donkey","konkey","funkey","bonkey"};
Scanner input = new Scanner(System.in);
//random string from string array
String str = randomString(words);
//change string array to char array
char[] word = str.toCharArray();
System.out.println("Picked " + str);
int size = 0;
boolean k = true;
//Create the char array
char[] array = new char[str.length()];
//fill it with *
for(int i = 0 ; i < str.length() ; i++) {
array[i] ='*';
}
//check if given char is in the string
do {
System.out.print("enter the char: ");
char given = input.next().charAt(0);
for(int i = 0 ; i < word.length ; i++) {
if(word[i] == given) {
char g = given;
//Check if the array[i] has been already replaced
//If not increase the size
if(array[i] == '*') size++;
array[i] = g;
}
if(size == str.length()){
k = false;
}
}
for(char e:array) {
System.out.print(e);
}
System.out.println();
}while(k);
}
public static String randomString(String[] str) {
int k = (int) (Math.random() * str.length);
String strk = str[k];
return strk;
}
Вывод на консоль:
enter the char: k
***k**
enter the char: d
***k**
enter the char: o
*o*k**
enter the char: n
*onk**
enter the char: k
*onk**
enter the char: e
*onke*
enter the char: y
*onkey
enter the char: m
monkey