このようにコードを修正すれば、ユーザーからの入力に基づいて配列が作成されます。Javaジェネリックス(作業コードですが、あまり効率的ではありません)
引数[0] =配列型(INT、ダブル、文字列)
引数配列
の[1] =長さ:サンプル入力が "S 4 ABA、BAB BAAのAAB" のようなものであろうargs [2 ...] =配列の内容
私のコードに配列を作成するのは恐ろしいですが、ジェネリックを組み込んでいる間にそれをどうやって他の方法で行うのかよく分かりません。コードのポイントは、作成された配列のいずれかを下のメソッドに渡すことができるようにすることです。
事前にお問い合わせいただきありがとうございます。
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
public class ArrayGenerics<E> {
public static void main(String[] args) throws FileNotFoundException {
checkUsage(args);
私の質問はここにある: 私は配列に記入し、私はそれはそう繰り返しではないような方法でこれを書き換えることができると思います、各条件のメソッドにコールするループを持っています。
if (args[0].matches("I|i")) {
ArrayList<Integer> iL = new ArrayList<Integer>();
for (int i = 2; i < args.length; i++) {
iL.add(Integer.parseInt(args[i]));
}
System.out.println("Original: " + iL);
System.out.println(" Unique: " + removeDuplicates(iL));
shuffle(iL);
System.out.println("Shuffled: " + iL);
System.out.println(" Maximum: " + max(iL));
} else if (args[0].matches("S|s")) {
ArrayList<String> sL = new ArrayList<String>();
for (int i = 2; i < args.length; i++) {
sL.add(args[i]);
}
System.out.println("Original: " + sL);
System.out.println(" Unique: " + removeDuplicates(sL));
shuffle(sL);
System.out.println("Shuffled: " + sL);
System.out.println(" Maximum: " + max(sL));
} else {
ArrayList<Double> dL = new ArrayList<Double>();
for (int i = 2; i < args.length; i++) {
dL.add(Double.parseDouble(args[i]));
}
System.out.println("Original: " + dL);
System.out.println(" Unique: " + removeDuplicates(dL));
shuffle(dL);
System.out.println("Shuffled: " + dL);
System.out.println(" Maximum: " + max(dL));
}
}
質問
public static <E> ArrayList<E> removeDuplicates(ArrayList<E> list) {
new HashSet<E>(list);
list = new ArrayList<E>(new HashSet<E>(list));
return list;
}
public static <E> void shuffle(ArrayList<E> list) {
Collections.shuffle(list);
}
public static <E extends Comparable<E>> E max(ArrayList<E> list) {
return Collections.max(list);
}
public static void checkUsage(String[] args)
{
if (args.length < 2)
{
System.out.println("Please supply more than 2 arguments");
System.exit(1);
}
if (!(args[0]=="s") && (args[0]=="S") &&
(args[0]=="d") && (args[0]=="D") &&
(args[0]=="i") && (args[0]=="I")){
System.out.println("Incorrect format of command.");
System.exit(1);
}
}
}
あなたの質問は何ですか? ? –
各条件文は、指定された引数で配列を塗りつぶすだけでなく、メソッドを呼び出します。私が各条件式のメソッドを呼び出すという事実は、繰り返しコードを持たないために条件式の後にメソッドを呼び出すことができるようにコードを構成できると私に思います。私はうまくいけばそれを少しはっきりと明らかにするために投稿を編集しました。 –
既に動作しているコードの改善に関するフィードバックをお探しの場合は、スタックオーバーフローが適切な場所ではありません。代わりに、姉妹サイト[コードレビュー](https://codereview.stackexchange.com/)に提出する必要があります。 –