입력을 기반으로 출력 승패를 인쇄하려고하는데 오류가 발생합니다. 내 코드에 대한 질문 아래에-
새로운 격투 게임이 인기를 얻었습니다. n 개의 악당이 있으며 각각은 약간의 힘을 가지고 있습니다. n 명의 플레이어가 각각 에너지를 가지고 있습니다. 에너지는 악당을 죽이는 데 사용됩니다. 악당은 플레이어의 에너지가 악당의 힘보다 큰 경우에만 죽일 수 있습니다.
Maxi는 게임을하고 있으며 특정 시간에 플레이어와 악당의 주어진 에너지와 강점으로 게임에서 승리 할 수 있는지 여부를 알고 싶어합니다. Maxi는 플레이어가 할당 된 에너지로 모든 악당을 죽일 수 있다면 게임에서 승리합니다.
입력 형식 입력의 첫 번째 줄은 여러 테스트 케이스 T로 구성됩니다. 각 테스트 케이스의 첫 번째 줄은 여러 악당과 플레이어 N으로 구성됩니다. 각 테스트 케이스의 두 번째 줄은 공백으로 구분 된 N으로 구성됩니다. 악당의 강점. 각 테스트 케이스의 세 번째 줄은 플레이어의 에너지로 구분 된 N 공백으로 구성됩니다.
에러 메시지
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at Main.main(Main.java:8)
내 코드
import java.util.*;
import java.lang.*;
import java.io.*;
public class Main {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
int numberOfTestcases = input.nextInt();
for (int k = 0; k < numberOfTestcases; k++) {
int number = input.nextInt();
System.out.println(number + "");
// Scanner input = new Scanner(System.in);
int[] players_energy = new int[number];
int[] villain_strength = new int[number];
for (int i = 0; i < villain_strength.length; i++) {
System.out.println("Please enter villain strengths ");
villain_strength[i] = input.nextInt();
}
for (int i = 0; i < players_energy.length; i++) {
System.out.println("Please enter player energies ");
players_energy[i] = input.nextInt();
}
for (int i = 0; i < players_energy.length; i++) {
System.out.println("player energies are " + players_energy[i] + "");
}
for (int i = 0; i < villain_strength.length; i++) {
System.out.println("villain strengths are " + villain_strength[i] + "");
}
Arrays.sort(players_energy);
Arrays.sort(villain_strength);
for (int i = 0; i < players_energy.length; i++) {
System.out.println("player energies after sorting are " + players_energy[i] + "");
}
for (int i = 0; i < villain_strength.length; i++) {
System.out.println("villain strengths after sorting are " + villain_strength[i] + "");
}
boolean result = true;
for (int i = 0; i < number; i++) {
if (players_energy[i] > villain_strength[i]) {
result = true;
} else {
result = false;
}
}
if (result) {
System.out.println("WIN");
} else {
System.out.println("LOSE");
}
}
}
}
내 IDE에서는 코드가 실행되지만 잘못된 승패 결정을 구현했습니다. 지금은 마지막 플레이어와 악당 쌍에만 출력을 기반으로하므로 모든 플레이어가 패배하고 마지막 플레이어가 이기면 결과는 다음과 같습니다. win
, 내가 잘못 생각합니다.
모든 플레이어가 모든 악당을이기는 것을 기준으로 한 경우 한 사람이지면 게임 전체에서집니다.
for (int i = 0; i < number; i++) {
result = result && players_energy[i] > villain_strength[i];
}
모든 플레이어의 에너지 대 모든 악당의 힘이라면 그 합계를 비교하십시오.
int energySum = 0;
int strengthSum = 0;
for (int i = 0; i < number; i++) {
energySum += players_energy[i];
strengthSum += villain_strength[i];
}
boolean result = energySum > strengthSum;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다