2017-12-20 46 views
-4

コンソールからユーザー入力を読み込み、そのあとで特定のメソッドを実行します。例:ユーザーが「Javaの電卓学部5」または「Javaの計算除算20 5.今のprogrammクラス学部または分割に進み、所定の数で結果を計算ユーザー入力を読み込んでメソッドを実行する

クラス計算の例:。

public class Calculator { 
public static void main(String[] args) { 
    String[] values = new String[3]; 

    Scanner in = new Scanner(System.in); 
    String line = in.nextLine(); 

    values = line.split(","); 
     int x = Integer.parseInt(values[1]); 
     int y = Integer.parseInt(values[2]); 

     if(values[0] == "divide") { 
     Divide.divination(x,y); 
     } 
    }  
} 
} 

クラス占いの例:全く

public class Divide { 
    public static int divination(int x, int y) { 
      int sum = x/y; 
      return sum; 
     } 
} 
+2

クール...何が問題なのですか?何を試しましたか? – Jite

+0

JavaリフレクションAPIを試してみよう – 0xtvarun

+0

@Jiteプログラム名の後ろにある単語に基づいてクラスを呼び出す方法と、そのクラスにユーザーがコンソールから送信した番号を与える方法を知りたい。 – Rayan

答えて

0

指定されていない質問、アプリケーションの設計について、そのあなたが入力について話をし、我々はいくつかのクラスを持っていると、コードなしで、我々は何もしないことはできません たぶん。。。。 a少しの助け。入力にはいくつかのメカニズム(例えばScanner)、分割入力文字列、ビジネスロジックと一致するものが必要です。

コアアイデア: 入力:

Scanner sc = new Scanner(System.in); 
String input = sc.next(); 
String[] array = input.Split(' '); 
0

、あなたの質問

に指定されている(コマンドライン引数からパラメータを使用して喜んでいる場合の質問は、しかし、十分に明確ではありません

"Javaの電卓の教員5" または「Javaの電卓除算オプションかもしれない20 5.

import java.util.Arrays; 
import java.util.List; 

public class Calculator { 

    public static final String TARGET_FACULTY = "faculty"; 
    public static final String TARGET_DIVIDE = "divide"; 

    public static void faculty(List<String> args) { 
     System.out.println("Hello from faculty : " + args); 
     // more logic to go here 
    } 

    public static void divide(List<String> args) { 
     System.out.println("Hello from divide : " + args); 
     // do you thing here 
    } 

    public static void main(String[] args) { 
     if (!validateInput(args)) { 
      System.out.println("Invalid options! usage: java Calculator <target> <options>"); 
      return; 
     } 
     List<String> additionalParameter = Arrays.asList(args).subList(1, args.length); 
     switch (args[0]) { 
     case TARGET_FACULTY: { 
      faculty(additionalParameter); 
      break; 
     } 
     case TARGET_DIVIDE: { 
      divide(additionalParameter); 
      break; 
     } 
     default: 
      // Expected default behavior here 
      throw new IllegalArgumentException("Operation unknown"); 
     } 

    } 

    private static boolean validateInput(String[] args) { 
     // Add more logic here 
     // - validate the target function 
     // - validate the additional parameters for that function 
     return args.length > 1; 
    } 
} 

そうでない場合は、コンソールからパラメータを読むことができます:あなたが他の何か:)

乾杯を期待していた場合

import java.util.Arrays; 
import java.util.List; 
import java.util.Scanner; 

public class Calculator { 

    public static final String T_FACULTY = "faculty"; 
    public static final String T_DIVIDE = "divide"; 

    public static void faculty(List<String> args) { 
     System.out.println("Hello from faculty : " + args); 
     // more logic to go here 
    } 

    public static void divide(List<String> args) { 
     System.out.println("Hello from divide : " + args); 
     // do you thing here 
    } 

    public static void main(String[] args) { 

     List<String> params = readFromConsole(); 
     if (!validateInput(params)) { 
      System.out.println("Invalid options! usage: java Calculator <target> <options>"); 
      return; 
     } 
     String target = params.get(0); 
     List<String> extraParams = params.subList(1, params.size()); 
     switch (target) { 
     case T_FACULTY: { 
      faculty(extraParams); 
      break; 
     } 
     case T_DIVIDE: { 
      divide(extraParams); 
      break; 
     } 
     default: 
      // Expected default behavior here 
      throw new IllegalArgumentException("Operation unknown"); 
     } 

    } 

    private static List<String> readFromConsole() { 
     // To be adapted 
     return Arrays.asList(new Scanner(System.in).nextLine().split(" ")); 
    } 

    private static boolean validateInput(List<String> params) { 
     // Add more logic here 
     // - validate the target function 
     // - validate the additional parameters for that function 
     return params.size() > 1; 
    } 
} 

は、より具体的にすることを躊躇しないでください!

+0

ありがとう!最初の投稿で私が今行ったのと同じように、もっと小さなものを探していました。私はなぜArrayIndexOutOfBoundsExceptionを取得するのか知っていますか? – Rayan

+0

あなたの入力はコンマ区切りにする必要があります(分割は "、"で行われるため)。したがって、分割後の入力に2(または3)個未満の要素がある場合、値[1](または値[2])の行はArrayIndexOutOfBoundsExceptionをスローします。 例:divide、1,2 ---> OK ** **除算、1 ---> KO ** – Booba

+0

** if( "divide" .equals(values [0])) {...} **値の代わりに**値[0] == "除算" **。 – Booba

関連する問題