Есть код игры "Угадай число". Но рейтинг участников вывести не могу.Пробовала array.sort(). Проблема в том, что его необходимо выводить вместе с именами участников. Если отсортировать массив с результатами int, то как в таком же порядке отсортировать имена. Пробовала через min, но как каждый раз выводить минимальное число, не считая предыдущего. Вообщем, запуталась. Помогите, плиз)
package guessthenumber;
import java.util.Scanner;
import java.util.Random;
import java.util.Arrays;
public class GuessTheNumber {
public static void main(String[] args) {
thePlay play1 = new thePlay();
play1.play();
System.out.println("Игроку по именем "+play1.thename+" понадобилось "+play1.attempts+" попыток.");
thePlay play2 = new thePlay();
play2.play();
System.out.println("Игроку по именем "+play2.thename+" понадобилось "+play2.attempts+" попыток.");
thePlay play3 = new thePlay();
play3.play();
System.out.println("Игроку по именем "+play3.thename+" понадобилось "+play3.attempts+" попыток.");
int [] mas = new int[] {play1.attempts,play2.attempts,play3.attempts};
String [] mas2 = new String[] {play1.thename,play2.thename,play3.thename};
/*int min = mas[0];
int temp = 0;
int h = 0;
while (h<mas.length){
for(int i = 0; i < mas.length; i++){
if(min > mas[i]){
min = mas[i];
temp=i;
}
}
h++;
System.out.print(mas2[temp]+" - ");
System.out.print(min+" ");
}*/
//Arrays.sort(mas);
//for (int i = 0; i < mas.length; i++) {
// System.out.print(mas[i]+" ");
// }
}
}
class thePlay{
int attempts;
String thename;
public void play(){
Player play= new Player();
play.Name();
Random random = new Random();
int randomNum = random.nextInt(3);
System.out.println("Компьютер загадал число от 0 до 3.");
int i = 1;
play.Number();
while (play.numP!=randomNum){
if(play.numP>randomNum) {
System.out.println("Загаданное число меньше,попробуй ещё.");
play.Number();
i++;
}
else {
System.out.println("Загаданное число больше,попробуй ещё.");
play.Number();
i++;
}
}
System.out.println("Ты угадал");
attempts = i;
thename = play.name;
}
}
class Player{
String name;
int numP;
public void Name(){
System.out.println("Привет! Введи своё имя: ");
Scanner scanner = new Scanner(System.in);
name = scanner.nextLine();
}
public void Number(){
System.out.print("Ты считаешь, что это число - ");
Scanner scanner = new Scanner(System.in);
numP = scanner.nextInt();
}
}
Я немного поправил ваши переменные и произвел сортировку.
public class GuessTheNumber {
public static void main(String[] args) {
List<Player> players = new ArrayList<>();
ThePlay play;
for (int i = 0; i < 3; i++) {
play = new ThePlay();
players.add(play.play());
toConsole(players.get(i));
}
players.sort(Comparator.comparing(Player::getAttempts));
players.forEach(GuessTheNumber::toConsole);
}
private static void toConsole(Player player) {
System.out.println(player.toString());
}
}
class ThePlay {
private int attempts;
private String playerName;
private Player player;
private int randomNum;
public ThePlay() {
attempts = 1;
player = new Player();
randomNum = new Random().nextInt(100);
System.out.println(randomNum);
}
public Player play() {
player.makeName();
System.out.println("Компьютер загадал число от 0 до 3.");
player.makeNumber();
while (player.getNumber() != randomNum) {
if (player.getNumber() > randomNum) {
System.out.println("Загаданное число меньше,попробуй ещё.");
} else {
System.out.println("Загаданное число больше,попробуй ещё.");
}
player.makeNumber();
attempts++;
}
System.out.println("Ты угадал");
player.setAttempts(attempts);
return player;
}
public int getAttempts() {
return attempts;
}
public void setAttempts(int attempts) {
this.attempts = attempts;
}
public String getPlayerName() {
return playerName;
}
public void setPlayerName(String playerName) {
this.playerName = playerName;
}
public Player getPlayer() {
return player;
}
public void setPlayer(Player player) {
this.player = player;
}
}
class Player {
private String name;
private int number;
private int attempts;
public void makeName() {
System.out.println("Привет! Введи своё имя: ");
Scanner scanner = new Scanner(System.in);
name = scanner.nextLine();
}
public void makeNumber() {
System.out.print("Ты считаешь, что это число - ");
Scanner scanner = new Scanner(System.in);
number = scanner.nextInt();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public int getAttempts() {
return attempts;
}
public void setAttempts(int attempts) {
this.attempts = attempts;
}
@Override
public String toString() {
return "Игроку по именем " + getName() + " понадобилось " + getAttempts() + " попыток.";
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как HashMap<String, Integer> map увеличить значение числа, например, я вставил в map значение: mapput("example", 5); и как его по ключу увеличить?
уважаемые программисты и кодеры, возникла следующая проблема, которую я уже безуспешно пытаюсь исправить без малого деньУ меня есть метод...
Ведь конструктор и занимается инициализированием нестатических полей классаНо везде пишут, что нестатические поля и блоки инициализируются...