• 締切済み

javaのプログラミングについての質問です。

ngsvxの回答

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

どここらコピーしてきたものか知りませんが、 まずは、ジェネリクスの残骸を何とかしたほうがいいんじゃないんですか? これじゃコンパイルも通らないでしょ。 コンパイルも通らないものを出しておいて、見てくださいというのは、 エチケットに反してますからね。

関連するQ&A

  • Javaのプログラムの質問です。

    Javaのプログラムについての質問です。 Listインターフェースの実装クラスの自作と、作成したクラスの全メソッドを呼び出すサンプルを作成せよ、という問題です。  注意点として、java.util.Listの実装クラスは使用出来ません(ArrayListなど)。実装するメソッドは、コードの中に番号を振ってあります。 import java.util.Collection; import java.util.Iterator; import java.util.ListIterator; import java.util.List; class LocalList implements List{  private int Count;  private String Data[];  private Iterator ite;  private ListIterator lite;  // コンストラクタ  void mylist(){   Data = new String[10];   Count = 0;  }  (1)  public boolean add(Object str){   if(Count >= 10){    return false;   }   Data[Count ++] = new String((String)str);   return true;  }  public void add(int i,Object str){  }        public boolean addAll(Collection c){   return false;  }        public boolean addAll(int i,Collection c){   return false;  }    (2)  public void clear(){   Count = 0;  }  public boolean contains(Object str){   return false;  }          public boolean containsAll(Collection c){   return false;  }  public boolean equals(Object str){   return false;  }    (3)  public Object get(int i){   return (i >= Count);  }  public int hashCode(){   return -1;  }  public int indexOf(Object str){   return -1;  }  public boolean isEmpty(){   return false;  }  public Iterator iterator(){   return ite;  }     public int lastIndexOf(Object str){   return -1;  }     public ListIterator listIterator(){   return lite;  }     public ListIterator listIterator(int i){   return lite;  }    (4)  public Object remove(int i){   return (i >= Count);  }    public boolean remove(Object str){   return true;  }         public boolean removeAll(Collection c){   return false;  }         public boolean retainAll(Collection c){   return false;  }    (5)  public Object set(int i,Object str){   return Data[i];  }    (6)  public int size(){   return Count;  }  public List subList(int i,int j){   return this;  }  public Object[] toArray(){   return Data;  }  public Object[] toArray(Object[] a){   return Data;  } } class Main {  public static void main(String[] args) {   mylist sub = new mylist();   sub.add("ビルドバーニングガンダム");   sub.add("ライトニングガンダム");   sub.add("ウイニングガンダム");   sub.add("ガンダムフェニーチェリナーシタ");   sub.add("R・ギャギャ");   for(int i = 0; i < sub.size(); i++){      System.out.println(sub.get(i));   }   // 改行   System.out.println();   // setメソッド   sub.set(1,"ガンダムエピオン");   for(int i = 0; i < sub.size(); i++){    System.out.println(sub.get(i));   }   // 改行   System.out.println();   // sizeメソッド   System.out.println("\r\n" + "機体数は" + sub.size() + "です" + "\r\n");   // removeメソッド   sub.remove(1);   for(int i = 0; i < sub.size(); i++){       System.out.println(sub.get(i));   }   // clearメソッド   sub.clear();   System.out.println("\r\n" + "機体数が" + sub.size() + "になったので負けです");    } } setメソッドとremoveメソッド以外は起動するのようになったのですが、この2つがうんともすんとも動きません。ジェネリクス型を使うという考え方もあるらしいのですが、ネットで調べてもピンと来ず寸詰まり状態になってしまっています。後少しだと思うのですが。。。。 どなたかご教授頂けないでしょうか?よろしくお願い致します。

  • SortedSetならぬSortedListの良い実装はありませんか

    「SortedSet」の重複を許さない制限を取り払ったクラス、(あえていうならば)「SortedList」なる高速な実装はないでしょうか。 頻繁に挿入と削除を繰り返すので、TreeSetのように木構造が望ましいのですが、自分でB木とか何とか木を実装するのも骨が折れるので、そのようなライブラリや、こうすれば簡単にできるよ!的なテクニックがあれば教えていただければと思います。 今はArrayListよりはLinkedListの方がましかなという理由でこんな感じで実装しています。 interface SortedList <E extends Comparable<E>> {  public void add(E v);  public boolean remove(E v);  public E get(int i); } class SortedLinkedList <E extends Comparable<E>>  extends LinkedList<E>  implements SortedList<E> {  public void add(E v) {   int i=0, size=size();   for(i=0; i<size; i++)    if(v.compareTo( get(i) )<0)     break;   add(i, v);  }  public boolean remove(E v) {   return super.remove(v);  }  public E get(int i) {   return get(i);  } }

    • ベストアンサー
    • Java
  • javaのプログラミングについての質問です。

    javaのプログラミングについての質問です。 Appletを用いて、後置記法によるインタラクティブなミニお絵描き言語を設計 し、実現しなさい。たとえば、 100<return>150<return>200<return>250<return>line<return> とキーボード入力すると、 → Applet上に(100,150)から(200,250)への直線が描かれる。 自分で作ったソースコードの一部です。(全部ペーストし切れませんでした) interface Fun { //関数のインターフェース void eval(MyStack s); //演算を実行 boolean iam(String s); //自分の名前がsと等しいかどうかを判定するメソッド // →自分が呼ばれたかどうかを判定する。 } abstract class Draw implements Fun{ public void eval(MyStack s){ int a, b,c,d; //第一引数と第二引数 a = s.pop(); //それぞれpop b = s.pop(); c = s.pop(); d = s.pop(); s.push((int) draw(a,b,c,d)); //実行は抽象メソッドで行う } abstract int draw(int a, int b,int c,int d); } class DrawLine extends Draw{ public boolean iam(String str){return str.equals("line");} int draw(int a, int b,int c,int d){ Graphics.drawLine(a,b,c,d); // ※ここが問題です。 } } ※のところで  Graphics の非 static メソッド drawLine(int, int, int, int) を static 参照することはできません というエラーメッセージが出ます。 どう直したらいいでしょうか

    • ベストアンサー
    • Java
  • 二分探索木の要素の数を数える、要素を削除する方法

    二分探索木の要素の数を数えるメソッドと、要素を削除するメソッドを加えたいのですが 実装の流れがわかりません。 よろしくお願いします(><) public class BinarySearchTree { Node root; public BinarySearchTree() { } public BinarySearchTree(Node root) { this.root = root; check(); } public int count(String s) { if(s == null) return 0; *ここの中がわかりません return 0; } public boolean remove(String s) { if(s == null) return false; *ここの中がわかりません double sd = toDouble(s); return false; } private double toDouble(String s){ return Double.parseDouble(s); } }

  • Javaのプログラムについての質問です。

    Listインターフェースの実装クラスの自作と、作成したクラスの全メソッドを呼び出すサンプルを作成せよ、という問題です。 注意点として、java.util.Listの実装クラスは使用出来ません(ArrayListなど)。 以下は極最初期のソースになります。 import java.util.List;  public interface Interface{   int size();   boolean add();   boolean remove();   void clear();   get();   set();  } public class LocalList implements Interface{ class Main implements LocalList {  public static void main(String[] args) {     } } Listインターフェースについてネットで調べてはいるのですが、具体的な解決方法が見えてきません。 どなたか参考ソースや考え方などを教えていただけないでしょうか。よろしくお願い致します。

  • javaプログラミング

    Javaを勉強中の者です。 以下のソースを実行すると ------------------------------------------- item[0] = {10, true, true} item[1] = {11, true, true} ------------------------------------------- となります。 しかし、 ------------------------------------------- item[0] = {10, true, false} item[1] = {11, false, true} ------------------------------------------- が期待する結果です。 public class test{ public static void main(String[] args) { boolean[] b = {false,false}; Item[] item = new Item[2]; item[0] = new Item(10 ,b); item[1] = new Item(11 ,b); item[0].setCandidate(0, true); item[1].setCandidate(1, true); b = item[0].getCandidate(); System.out.println("item[0] = {" + item[0].getNumber() + ", " + b[0] + ", " + b[1] + "}"); b = item[1].getCandidate(); System.out.println("item[1] = {" + item[1].getNumber() + ", " + b[0] + ", " + b[1] + "}"); } } public class Item{ private int number; private boolean[] candidate = new boolean[2]; public Item(int number, boolean[] candidate){ this.number = number; this.candidate = candidate; } public void setNumber(int num){ number = num; } public int getNumber(){ return number; } public boolean[] getCandidate(){ return candidate; } public void setCandidate(int num , boolean candi){ this.candidate[num] = candi; } } おそらくcandidate[]が上書きされてる? 説明がうまくできません… 期待通りの結果にするにはどうすればよいのでしょうか?

    • ベストアンサー
    • Java
  • Javaの課題がわかりません。教えてください

    ジェネリックスでコレクションクラスの作成です //次のクラスを実装する。 //クラス: /** * オブジェクトの集合(セット)を管理するクラス。 */ public class MySet<E>{ } //フィールド: /** オブジェクトを格納する配列への参照 */ private E[] elements;{ } /** 格納されている要素数 */ private int size;{ } //コンストラクタ: /** * 8件の要素を格納できる配列を用意する。 */ public MySet(){ } /** * n件の要素を格納できる配列を用意する。 */ public MySet(int n){ } //メソッド: /** * elemをセットに追加する。成功でtrueを返す。 */ public boolean add(E elem){ } /** * セット内でelemと同値の要素を探索する。存在すればtrueを返す。 */ public boolean contains(E elem){ } /** * セットに含まれる要素数を返す。 */ public int size(){ } /*※mainメソッドを用意し,実装した全てのコンストラクタやメソッドが正常に 機能しているかどうかを検証する。*/ {}の中身以外は変更しないで作成します。

  • Javaプログラミング

    Javaプログラミングで分からない課題が出たので、教えてもらえませんか? 実行結果 1つ目の整数を入力してください。 23 2つ目の整数を入力してください。 12 足し算の結果:35 引き算の結果:11 プログラムの大枠はこのようになるのですが public class 〇〇 { public static void main(String[] args) { System.out.println("1つ目の整数を入力してください。"); } public static int add(int a,int b) { return (a + b); public static int sub(int a,int b) { } }

    • ベストアンサー
    • Java
  • javaプログラミングの質問です。

    プログラムで数値の奇遇、合計値、最大値までは出せたのですが平均値の出し方がわかりません。 どこに何を入れればいいかを教えてください。お願いします。 public class pazu{ public static void main(String[] args){ int sum =0,saidai; System.out.println("コマンドラインパラメータは"+args.length+"個です"); for(int i=0;i<args.length;i++){ int x=Integer.parseInt(args[i]); if(pazu.is_even(x)) System.out.println(args[i]+"は偶数です"); else System.out.println(args[i]+"は奇数です"); sum+=x; } saidai=pazu.max(args); System.out.println("合計:"+sum); System.out.println("最大:"+saidai); } static boolean is_even(int number){ return number%2==0; } static int max(String[] number){ int max =0; for(int i=0;i<number.length;i++){ if(max<Integer.parseInt(number[i])){ max=Integer.parseInt(number[i]); } } return max; } }

    • ベストアンサー
    • Java
  • Javaの課題について質問です。パート(1)

    1ヶ月前に出されたjavaの課題でどうしてもわからなく投稿させて頂きました。正直自分の力で解決するべきだと思いますが初めてjavaに触れるので全く分からず投稿しました、どうかご教授下さい。  コンパイルしたのですが01,06,99以外の処理に全てエラーが出てしまいます。07,08に関しては最初の頭の数で昇順、降順されてしまいます。。 実行クラスはパート(2)に載せます。 import java.util.ArrayList; public class A21_StrArray { ArrayList<String> list = new ArrayList<String>(); public void add(String data){    //要素追加 list.add(data); } public void set(int index, String data){   //指定インデックスがない場合エラー list.set(index,data); } public String get(int index) throws IndexOutOfBoundsException{   //指定インデックスがない場合エラー String str; str = list.get(index);//指定文字列を取得 return str; } public void clear(){  //要素クリア list.clear(); } } import java.util.Collections; public class A22_StrArray extends A21_StrArray{ public String[] getAll(){ String[] all = new String[list.size()]; //全ての要素を配列で取得 for(int i=0; i<list.size(); i++){ all[i] = super.get(i); } return all; } public int getIndex(){      //要素数を取得 int item; item = list.size(); return item; } public static final int ASC_SORT = 0; //昇順ソート public static final int DESC_SORT = 1;   //降順ソート public void sort(int mode){           //引数 mode ASC_SORT, DESC_SORT if(ASC_SORT == mode){ Collections.sort(list); } else if(DESC_SORT == mode){ Collections.reverse(list); } } } 以下ファイルの引数は全てpath import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class A23_StrArray extends A22_StrArray{ public void readFile(String path)throws Exception{ try{ FileReader in1 = new FileReader("path"); //テキストファイルの読み込み(上書きモード) int ch; while ((ch = in1.read()) != -1){ System.out.print(Integer.toHexString(ch) + " "); } in1.close(); }catch (IOException e) { System.out.println(e); } } public void readFile(String path , boolean modeAdd)throws Exception{ //テキストファイルの読み込み(追記/上書きモード) try { BufferedReader br1 = new BufferedReader(new FileReader(path)); String str1 ; if(modeAdd == true){ while ((str1 = br1.readLine()) != null) { list.add(str1); } br1.close(); } if ( modeAdd == false){ list.clear(); while ((str1 = br1.readLine()) != null){ list.add(str1); } br1.close(); } }catch (IOException e){ System.out.println(e); } } public void writeFile(String path)throws Exception{ //テキストファイルの書き込み(上書きモード) try{ FileWriter wr1 = new FileWriter("path"); String str2 = null ; wr1.write(str2); wr1.close(); }catch (IOException e) { System.out.println(e); } } public void writeFile(String path,boolean modeAdd)throws Exception{   //テキストファイルの書き込み(追記/上書きモード) try{ BufferedReader br2 = new BufferedReader(new FileReader(path)); String str3 ; if(modeAdd == true){ while ((str3 = br2.readLine()) != null) { list.add(str3); } br2.close(); } if(modeAdd == false){ list.clear(); while ((str3 = br2.readLine()) != null){ list.add(str3); } br2.close(); } }catch (IOException e) { System.out.println(e); }      } }