2017-12-16 47 views
0

(1) 사용자의 성명을 묻는 메시지를 표시 한 다음 사용자 이름을 생성하는 프로그램을 만들려고합니다. (2)는 번호에 대한 프롬프트를 표시 한 다음 그 번호가 홀수인지 또는 짝수인지를 결정합니다. 나는 사용자 이름과 홀수/짝수 클래스에 대한 코드를 썼다. 그리고 그것들을 메인 클래스에서 호출하려고한다. 그러나 주 클래스에서 호출 할 때 사용자 이름 메서드는 사용자 이름을 생성하기 전에 사용자에게 두 번 프롬프트하고 홀수/짝수 메서드는 사용자가 입력 한 숫자가 홀수/짝수인지 실제로 확인하지 않습니다. 사용자 이름 클래스에서 스캐너 개체를 제거하면 범위를 벗어난 컴파일 오류가 발생하므로 프로그램을 다시 실행해야합니다. return 문을 사용해야합니까?클래스에서 Java의 기본 클래스에 사용자 입력

이름

/** 
* Class to generate the username based on user's first name and randomly generated numbers 
*/ 
public void username() 
{ 
    Scanner inputReader = new Scanner(System.in); 
    String fullName = inputReader.nextLine(); 
    // create random object and variable to store it in 
    Random randomizer = new Random(); 
    int randomNumber = randomizer.nextInt(1000); 
    // create variable to store lowercase username 
    String lowercase = (fullName.toLowerCase()); 
    // create string variable to format username to first three characters in lowercase 
    String firstThreeLetters = (lowercase.substring(0, 3)); 
    // concatenate lowercase characters and random number 
    String usernameFinal = (firstThreeLetters + randomNumber); 
    // print out final username 
    System.out.println("Your username is " + usernameFinal); 
} 

홀수/짝수

/** 
* Class to determine if a user inputted value is odd or even 
*/ 
public void OddEven1() 
{ 
    Scanner inputReader = new Scanner(System.in); 
    int userInteger = 0; 
    // if/else to determine if number is odd or even 
    if (userInteger % 2 == 0) 
    { 
     System.out.println(userInteger + " is an even number."); 
    } 
    else 
    { 
     System.out.println(userInteger + " is an odd number."); 
    } 
} 

Main 메서드

{ 
/** 
* This class holds the main method through which all other classes are run. 
*/ 
public static void main(String[] args) 
{ 
    // create objects 
    Username usernameGenerator = new Username(); 
    OddEven oddeven = new OddEven(); 
    Scanner inputReader = new Scanner(System.in); 

    // prompt for real name and print username 
    System.out.print("Name: "); 
    String fullName = inputReader.nextLine(); 
    usernameGenerator.username(); 

    // prompt for number 
    System.out.print("Give me a number: "); 
    // variable to store value 
    int userInteger = inputReader.nextInt(); 
    oddeven.OddEven1(); 
} 

출력 : Here is my output

+0

당신은 기본적으로 당신이 두 번 필요가없는 기본 또는 사용자 정의 클래스에서 입력을 읽을 필요 .. – RohitS

답변

1

1 - 당신은 내가 첫 번째 방법을 유지하는 것을 권장하고 username() 기능에 fullName를 전달할 것 여기

Scanner inputReader = new Scanner(System.in); 
String fullName = inputReader.nextLine(); 

String fullName = inputReader.nextLine(); 

그리고 하나 여기에 하나, 두 번 사용자의 이름을 요청 . 예를 들어 :

/** 
    * Class to generate the username based on user's first name and 
    randomly generated numbers 
    */ 
    public void username(fullName) 
    { 
    // create random object and variable to store it in 
    Random randomizer = new Random(); 
    int randomNumber = randomizer.nextInt(1000); 
    // create variable to store lowercase username 
    String lowercase = (fullName.toLowerCase()); 
    // create string variable to format username to first three characters in lowercase 
    String firstThreeLetters = (lowercase.substring(0, 3)); 
    // concatenate lowercase characters and random number 
    String usernameFinal = (firstThreeLetters + randomNumber); 
    // print out final username 
    System.out.println("Your username is " + usernameFinal); 
} 

2 - 당신은 두 번째 함수 OddEven1()에서 동일한 않습니다. 매개 변수도 전달하는 것이 좋습니다. exmaple으로 :

public void OddEven1(number) 
{ 
    int userInteger = number; 
    // if/else to determine if number is odd or even 
    if (userInteger % 2 == 0) 
    { 
     System.out.println(userInteger + " is an even number."); 
     } 
    else 
    { 
     System.out.println(userInteger + " is an odd number."); 
    } 
} 

3 - 그래서 주요 기능이된다 :

public static void main(String[] args) 
{ 
// create objects 
Username usernameGenerator = new Username(); 
OddEven oddeven = new OddEven(); 
Scanner inputReader = new Scanner(System.in); 

// prompt for real name and print username 
System.out.print("Name: "); 
String fullName = inputReader.nextLine(); 
usernameGenerator.username(fullName); 

// prompt for number 
System.out.print("Give me a number: "); 
// variable to store value 
int userInteger = inputReader.nextInt(); 
oddeven.OddEven1(userInteger); 
} 
+0

너무 감사 많은! 그냥 명확히하기 위해, 다른 클래스의 메인 클래스에서 사용자 입력을 사용하고 싶을 때마다 매개 변수를 사용해야합니까? – iMagicMango

+0

_main class_는 사용자 입력을 처리하여 함수에 전달하는 데 편리한 방법입니다. 그러나 원하는 것은 무엇이든 할 수 있습니다. 나 자신을 위해, 나는 함수에 인수를 전달하는 것을 선호한다. 또한 _Object Oriented Programming _ 개념을 수정해야 할 필요가 있다고 생각합니다. 행운을 빕니다! – andrewnagyeb

1

당신은

public void OddEven1(int userInteger) 
{ 

    // if/else to determine if number is odd or even 
    if (userInteger % 2 == 0) 
    { 
     System.out.println(userInteger + " is an even number."); 
    } 
    else 
    { 
     System.out.println(userInteger + " is an odd number."); 
    } 
} 

이제 사용자 이름에 대해 논의 할 수

아래 주요 방법 내부

System.out.print("Give me a number: "); 
    // variable to store value 
    int userInteger = inputReader.nextInt(); 
    oddeven.OddEven1(userInteger); 

홀수/같은 코드를 변경해야합니다. 이미 메인 메소드에서 사용자 이름을 캡처했습니다. 따라서 사용자로부터 다시 가져올 필요가 없습니다.

String fullName = inputReader.nextLine(); 
    usernameGenerator.username(fullName); 

public void username(String fullName) 
{ 
//Your logic 
}