2013-10-12 3 views
0

그래서 Java에서 숫자 추측 게임을 만들려고합니다. 사용자는 1 - 100 사이의 숫자를 생각한 다음 컴퓨터가 이진 검색 방법을 사용하여 숫자를 추측하려합니다. 따라서 컴퓨터가 만드는 첫 번째 추측은 사용자가 75보다 높은 값을 선택하고 그 값이 37보다 작 으면 37 일 것입니다.숫자 추측 게임의 상한과 하한 경계 - Java

그래서 새로운 위/아래 경계를 설정하려고합니다. 사용자가 자신이 선택한 것을 입력 할 때마다 컴퓨터가 75를 추측하고 사용자가 너무 높으면 새로운 상위 경계가 74가되어야하고 37이 38보다 너무 낮 으면 새로운 하위 경계가됩니다. NumberGuesser (int lowerBound, int upperBound)라는 생성자 내에서이 작업을 수행하려고합니다. 하한선이 작동하는 것처럼 보이지만 상한선을 조작하는 데 도움이 필요합니다. 어쩌면, 당신은 사람들이 저의 경계를 한 번 줄여서 올바르게 작동하는지 알 수 있습니다. 또한 컴퓨터를 50 이상으로 추측 할 수없는 것처럼 보입니다. 높은 값을 선택하면 50 이상이되지 않습니다.

지금 당장은 Java 클래스로 수업을 진행하고 있으며 대부분의 결정을 작성했습니다. 클래스 내의 알고리즘을 만들고 내 프로그램 내의 객체는 NumberGuesser라는 클래스를 참조합니다.

public class NumberGuesser 
{ 
private int userGuess = 50; 
private int max = 100; 
private int min = 1; 


NumberGuesser(int lowerBound, int upperBound) 
{ 
    max = userGuess; 

    /*if(userGuess > max) 
    { 
     max = userGuess; 
    } 
    else if(min < userGuess) 
    { 
     min = userGuess; 
    }*/ 

    if(userGuess < max) 
    { 
     max = userGuess; 
    } 
    else if(userGuess > max) 
    { 
     min = userGuess; 
    } 
} 

void lower() 
{ 
    userGuess = userGuess/2; 
} 

void higher() 
{ 

    userGuess = ((max - userGuess)/2) + userGuess; 
} 

public int getCurrentGuess() 
{ 
    return userGuess; 
} 

void reset() 
{ 

} 
} 

메인 드라이버 클래스

import java.util.*; 

public class Assignment7 
{ 
public static void main(String[] args) 
{ 
    Scanner input = new Scanner(System.in); 
    char guess; 
    int min = 1; 
    int max = 100; 
    NumberGuesser numGuess = new NumberGuesser(min, max); 

    System.out.println("Please think of a number between 1 and 100"); 

    do 
    { 
     System.out.print("Is the number "+numGuess.getCurrentGuess()+"(h/l/c): "); 
     guess = input.next().charAt(0); 

     if(guess == 'h') 
     { 
      numGuess.higher(); 
     } 
     else if(guess == 'l') 
     { 
      numGuess.lower(); 
     } 
     else if(guess == 'c') 
     { 
      System.out.println("Correct!"); 
     } 
    }while(guess != 'c'); 
} 
} 

어떤 도움을 것 크게 감사들 :

여기 내 코드입니다! 건배!

답변

1

코드가 적합하지 않습니다. 매개 변수를 생성자에 전달하려는 경우 일반적으로 클래스 필드를 설정하기 위해 해당 숫자를 사용합니다.

하지만 이렇게 말하면서 생성자 매개 변수로이 작업을 수행 할 수 있을지 잘 모르겠습니다. 대신에 내가 제안 할 것이 무엇입니까?

  • 우선 클래스에 상한 및 하한 int 필드를 제공하십시오.
  • 사용자 응답에 따라이 필드가 보유한 값을 변경하십시오. 아마도 setUpperBound(int upperBound)setLowerBound(int lowerBound) 방법을 줄 수 있습니다.
  • 클래스를 다음 추측으로 만들기 위해 값을 사용하십시오.
  • 드라이버 코드를 기반으로

, 당신의 코드를 한 번 생성자를 호출하고, 그 괜찮아요, 당신은 이미 추천대로, 클래스 UPPERBOUND 및 LOWERBOUND의 INT 필드를 제공해야합니다, 당신의 LOWERBOUND을 설정 및 upperBound를 생성자와 함께 수행해야합니다 (). lower()higher() 메서드 호출에서이 필드의 값을 변경합니다. 이제이 작업을 시도하고 싶을 것입니다. 당신의 높고 낮은 방법에서


, 먼저 상한을 설정해야합니다 및 하한 새 추측을 전에 최소 및 최대, 를 사용할 수 있습니다. 그런 다음 추측을 할 때 min과 max를 사용하십시오. 너는 그렇게하지 않는다.

+0

@PiaraSandhu : Assignment7 클래스가 제공 되었습니까? –

+0

Eclipse에서 생성했습니다. 그것은 단지 프로그램의 이름입니다. –

+0

@ 피아라 산드 후 : 아니, 오해. 과제 **는 ** 귀하의 ** 코드입니까 ** 귀하의 강사 ** 코드입니까?변경할 수없는 코드입니까, 아니면 변경할 수있는 코드입니까? –

관련 문제