2016-11-18 11 views
0

사용자에게 애완 동물 이름, 종족, 갈증 수준을 알려주고 이에 따라 응답을 제공하는 프로그램을 작성하려고합니다.자바는 하나의 메서드에서 여러 문자열을 반환합니다.

누군가가 나를 메신저로 데려다 줄 수 있다면 감사하겠습니다. askpetname과 thirstlevel의 두 가지 메소드에는 전역 변수를 사용하지 않고 전체 클래스에서 액세스 할 수있는 2 개의 문자열이 있습니다.

누군가가 내가 무엇을 잘못하고 있는지 또는 올바른 방향으로 나를 가리키고 있는지 말해 줄 수 있습니까?

또한 지루한 작업을위한 메서드를 과도하게 사용하는 것은 좋지 않지만 구문을 암기하는 데 도움이된다는 것을 알고 있습니다.

감사합니다.

class dinoo 
{ 
public static void main(String[] p) 
{ 


    explain(); 
    output(); 

    System.exit(0); 

}

public static void explain() 
{ 

    print("The following program demonstrates use of user input by  asking for pet name."); 

    return; 
} 

public static String askpetname() 
{ 
    Scanner scanner = new Scanner(System.in); 

    print("Name your dinosaur pet!"); 

    String petname = scanner.nextLine(); 

    print("Awesome, cool dinosaur name, what species is " + petname+ " ?"); 

    String petspecies = scanner.nextLine(); 

    return petname, petspecies; 
} 

public static int thirstlevel() 
{ 
    Random ran = new Random(); 

    int thirst = ran.nextInt(11); 
    int hunger = ran.nextInt(11); 


    return thirst,hunger; 
} 

public static String anger(int thirst, int hunger) 
{ 
    double angerscore = (thirst+hunger)/2; 
    String temper;  

    if(angerscore<=2) 
    { 
     temper = "Serene"; 
    } 

    else if(3<=angerscore<=6) 
    { 
     temper= "Grouchy"; 
    } 

    else if(6<angerscore) 
    { 
     temper = "DANGEROUS"; 
    } 

    return temper; 
} 


public static String warning() 
{ 
    if (temper.equals("Serene")) 
    { 
     print("He's looking happy!"); 
    } 
    else if(temper.equals("Grouchy")) 
    { 
     print("Ahhh hes a bit "+temper+", you better start feeding him before he gets mad!"); 
    } 

    else if(temper.equals("DANGEROUS")) 
    { 
     print("GET OUT OF THERE, HES " + temper+"!!!. He will have to be put down for everyones safety."); 
    } 

} 
public static void output() 
{ 
    print(askpetname() + "'s, thirst level is "+thirstlevel()+"/10"); 

    return; 
} 



public static String print(String message) 
{ 
    System.out.println(message); 

    return message; 
} 

}

+0

어떤 문자열에 대해 이야기 할 수 있습니까? 'thirstlevel()'을 보면 문자열이 없습니다. 이 문자열을 어디에서 사용 하시겠습니까? 글로벌 변수는 세계에서 최악의 것은 아닙니다. – user123

+0

내 나쁜 나는 thirstlevel에 int 의미. – coding95

답변

3

당신은 할 수 없기 때문에 그 코드는 컴파일되지 않습니다 :

return string1, string2; 

또는

else if(3<=angerscore<=6) 

여러 문자열을 반환하는 대신 가장 좋은 방법은 Pet이라는 애완 동물의 이름 필드, 해당 종의 종 필드뿐 아니라 다른 기아, 갈증 및 기타 필드를 보유하는 클래스를 만드는 것입니다. ... 하나의 논리적 "애완 동물"을 구성하는 모든 데이터와 애완 동물의 상태에 따라 분노의 값을 반환하는 getAnger()과 같은 메소드를 가장 잘 캡슐화합니다. 그런 다음 제작 방법에서 실행 가능한 Pet 객체를 만들고 반환 할 수 있습니다.

또한 코드에는 컴파일 오류가 많으므로 코드 작성 방법을 개선 할 수 있습니다. 컴파일하지 않을 코드에 "나쁜"코드에 새 코드를 추가하려고 시도하지 마십시오. 가능한 경우 NetBeans, Eclipse 또는 IntelliJ와 같은 IDE를 사용하여 프로그램을 만들 수 있습니다. IDE에 컴파일 오류가있는 경우 플래그가 표시되고 키는 입니다. 기존 컴파일 오류을 수정하기 전까지는 새 코드를 추가하지 마십시오. IDE를 사용할 수 없다면 조기에 자주 컴파일해야하며 똑같은 일을해야합니다. 새로 추가하기 전에 모든 오류를 수정하십시오.

+0

의견에 감사드립니다. – coding95

0

먼저, 이것을 시도하기 전에 먼저 튜토리얼을 통해 촬영하는 것이 좋습니다. 범위, 객체, 배열 및 기능을 다루는 모든 안녕하세요. 객체 지향 스타일에도 익숙해 져야합니다. 절차 적 프로그래밍이 아니더라도 ... 2 개의 객체를 반환하는 것은 없습니다 ... 항상 1 (많은 객체를 포함하는 배열 일 수 있지만 배열은 단일 객체입니다)

계속 이동, 이 끔찍한 코딩 연습하지만, 초보자에 대한 확인하지만 당신의 기능은 모든 정적이기 때문에, 각 함수 내에서 개인 정적 변수를 생성하고 게터 기능

//convert 
String petname = scanner.nextLine(); 
// To this 
private static String petname = scanner.nextLine(); 
// Then add this below it 
public static String getPetName() 
{ 
return petname; 
} 

와 당신이 필요로하는 데이터의 모든 조각을위한 동일한을 만들 수 있습니다.

지금

askpetname(); 
thirstlevel(); 

후 최종 출력을 인쇄, 당신의 모든 기능에서 return 문을 제거하고 반환

그런 다음 홈페이지에서 모든 함수를 호출 무효가 입력 선언 (당신이 함수를 호출 한 후) as

System.out.println("Petname: " + getPetname + " ThirstLevel: " + getThirstLevel() + " HungerLevel: " + getHungerLevel); 
+0

나는 그것을 보았다. 입력에 감사드립니다. – coding95

+0

귀하의 환영하지만, 진지하게 나는 그것이 작동하도록하는 방법을 보여 주었고, 빠르고 더러운, 최고의 조언은 튜토리얼을 통해 적절하게 조정됩니다. –