자바 초보 for문으로 랜덤값 출력

조회수 1023회

import java.util.Random; import java.util.Scanner;

public class 랜덤과제 { public static void main(String[] args) { Scanner 스캐너 = new Scanner(System.in); String 입력값 = 스캐너.next(); System.out.println("종족을 입력해주세요"); System.out.println("1. 테란 2. 프로토스 3. 저그"); // 세가지 종족을 입력가능하게 함. int 전투입력값 = 스캐너.nextInt(2); int 마린공격력 = 6; int 저글링공격력 = 10; int 질럿공격력 = 16;

    if( 전투입력값 == 1 ) { //테란의 랜덤값, 3가지 상황 부여
        Random 랜덤 = new Random();
        int 랜덤값 = 랜덤.nextInt(2);
    if ( 랜덤값 == 0) { //테란의 전투상황과 결과
        System.out.println("마린이 저글링떼에 위협을 당하고있다.");
        int 지원요청 = 랜덤.nextInt(80);
        System.out.println("탱크 지원사격!!! 총 데미지 " + (마린공격력 * 지원요청) + "의 데미지를 가해서 승리하였다.");
    } else if (랜덤값 == 1) {
        System.out.println("프로토스의 압도적인 질럿부대에 밀리고 있다.");
        int 스킬사용 = 랜덤.nextInt(40);
        System.out.println("파이어뱃과 마린부대의 스팀팩업그레이드!!" + " " + (마린공격력 * 스킬사용) + "만큼의 공격력이 업그레이드가 되었고 전투에서 유리해졌다");
    } else if (랜덤값 == 2) {
        int 연합군의반격 = 랜덤.nextInt(100);
        System.out.println("저그와 프로토스가 연합하여" + (저글링공격력+질럿공격력)*(연합군의반격) + "의 데미지를 입어서 패배하였다.");
        if ( 입력값.equals(2) ) { //저그의 랜덤값 3가지 상황 부여
        Random 랜덤1 = new Random();
        int 랜덤값1 = 랜덤1.nextInt(2);
        if ( 랜덤값1 == 0) { //저그의 전투상황과 결과
            System.out.println("저글링이 스팀팩을 가진 마린과 싸우고 있다.");
            int 업그레이드 = 랜덤1.nextInt(40);
            System.out.println("저글링의 아드레날린 업그레이드!!" + (저글링공격력 * 업그레이드) + "만큼의 공격력이 상승해서 승리하였다.");
        } else if (랜덤값1 == 1) {
            System.out.println("프로토스의 아칸부대가 침범했다.");
            int 가디언의지원 = 랜덤1.nextInt(20);
            System.out.println("가디언의 지원이 왔고" + " " + (마린공격력 * 가디언의지원) + "의 데미지를 입혀 아칸부대가 후퇴했다");
        } else if (랜덤값1 == 2) {
            int 연합군의습격 = 랜덤1.nextInt(50);
            System.out.println("테란과 프로토스가 연합하여" + (마린공격력+질럿공격력)*(연합군의습격) + "의 데미지를 입어서 패배하였다.");
            if ( 입력값.equals(3) ) { //프로토스의 랜덤값 3가지 상황 부여
            Random 랜덤2 = new Random();
            int 랜덤값2 = 랜덤2.nextInt(2);
            if ( 랜덤값2 == 0) { //프로토스의 전투상황과 결과
                System.out.println("질럿이 아드레날린을 가진 저글링과 싸우고 있다.");
                int 템플러의지원 = 랜덤2.nextInt(60);
                System.out.println("다크템플러와 하이템플러의 지원이 왔다!!" + (질럿공격력 * 템플러의지원) + "만큼의 전투력이 상승해서 승리하였다.");
            } else if (랜덤값2 == 1) {
                System.out.println("테란의 벌쳐부대가 일꾼유닛들을 공격하기 시작했다.");
                int 드라군출동 = 랜덤2.nextInt(70);
                System.out.println("때마침 드라군이 생산되어서" + " " + (질럿공격력 * 드라군출동) + "의 데미지를 입히고 다수의 벌쳐를 소멸시켜서 벌쳐가 퇴각했다");
            } else if (랜덤값2 == 2) {
                int 연합군의공격 = 랜덤2.nextInt(120);
                System.out.println("저그과 테란이 연합하여" + (마린공격력+저글링공격력)*(연합군의공격) + "의 데미지를 입어서 패배하였다.");
            }
    }
        }
    }
    }
    }
}

}

종족 세가지를 정하고 종족을 입력하면 종족별로 각상황을 랜덤으로 값을 호출하고 싶습니다.

  1. 테란의 경우는 리턴이 되는데, 그외의 종족들은 값이 나오질 않아 답답해서 질문 올립니다.

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기
    1. 재미있게 코딩하시는 것 같아 저도 열심히 답변 드립니다.

    2. 가장 큰 문제는 if 문의 중첩 구조가 잘못 되어있는 것 같습니다. 테란, 프로토스, 저그의 상황은 각각 독립적인데, 테란 상황 밑에 저그 상황 밑에 프로토스 상황이 있는 이상한 if문 구조를 취하고 있습니다. 구조상 테란 외에 다른 시나리오는 나올 수 없습니다.

    3. "입력값"이라는 변수가 사용자에게 받을 유일한 input으로 보입니다. 그러나 사용될 일이 없는 "전투입력값"이라는 변수도 받고 있어 주석처리 했습니다. 그리고 "입력값"은 String일 필요가 없어 int로 변경했습니다.

    4. 구조상 Random 랜덤 = new Random(); 과 int 랜덤값은 한 번만 선언해도 되는 변수여서 랜덤1, 랜덤2 같은 것들은 지웠습니다.

    5. 마지막으로 처음 사용자에게 안내할 때는 1. 테란 2. 프로토스 3. 저그 라고 안내하고 있으나 if문에서는 1. 테란 2. 저그 3. 프로토스와 같이 순서가 바뀌어 있어서, 사용자에게 안내한 순서 기준으로 수정했습니다.

    6. HashCode에는 Java main함수가 들어간 코드를 복붙하면 Syntax가 전부 깨져 나옵니다. PasteBin 링크를 드립니다. 여기서 보면 깔끔하게 잘 나오네요. https://pastebin.com/TA2qx8up

    7. 참고로 줄바꿈이 이상하게 보이는건 제 intellij 코드 포맷터의 영향이니 취향에 맞게 수정하시면 됩니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 답변 감사드립니다. 혹시 나중에도 모르는것이나 헷갈리는 것이 나올때 개인적으로 이메일이나 쪽지 등 통해서 더 여쭤봐도 될까요? 김동현 2020.6.14 22:08

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)