2017-12-16 20 views
0

(1)ユーザーのフルネームの入力を要求してユーザー名を生成するプログラムを作成しようとしています。 (2)は番号の入力を促し、その番号が奇数か偶数かを判断します。私はユーザー名と奇数/偶数クラスのコードを書き、メインクラスからそれらを呼びたいと思います。しかし、メインクラスから呼び出された場合、usernameメソッドはユーザー名を生成する前にユーザーに2回プロンプトを出し、odd/evenメソッドはユーザーが入力した番号がodd/evenであるかどうかを実際には判断しません。ユーザー名クラスからスキャナオブジェクトを削除すると、範囲外のコンパイルエラーが発生するので、プログラムが実行されるようにする必要があります。リターンステートメントを使用すべきですか?クラスから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(); 

そして、もう一つ、ここでは1、二度、ユーザーの名前を要求します。例:

/** 
    * 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 - 第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

あなたは、メインメソッド内

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

奇数/偶数

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."); 
    } 
} 

以下のようなコードは今のユーザー名について議論することができます変更する必要があります。あなたはすでにメインメソッドからユーザー名を取得しています。だからあなたはもう一度それをユーザーから取得する必要はありません。

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

public void username(String fullName) 
{ 
//Your logic 
} 
関連する問題