トップページ⇒tech
675コメント266KB

【Java編】 学校の宿題は俺にやらせろ 【Java編】

■ このスレッドは過去ログ倉庫に格納されています
0001糞すれクリエータNGNG
おい!厨房どもJavaの宿題はここに持って来い!
ただGUIかんけーはめんどクセーから、放置するぞ!

☆丸投げ歓迎 AGE進行☆
0558557NGNG
自分でもやってみまふが
取り合えず丸投げするのでどなたか分かったらおながいします。
厨房でスマソ

class Foo {
public static void main(String[] args) {
System.out.println("5: "+limit(5));
System.out.println("15: "+limit(15));
}
// �@
}
// �A
int 型の変数i を引数に持ち、もしi が10 より大きければi を10 にし、i をint 型で返す以下
のメソッドlimit は、上の�@と�Aのどちらに書けばよい?
static int limit(int i) {
if (i > 10) {
i = 10;
}
return i;
}
0559557NGNG
2 ● 演習1-2 int 型の2つの変数a,b を引数に持ち、2 つの和を"2 つの和は"に連結してString
型として返す以下のメソッドtasu を下線部を埋めて追加せよ。またmain メソッドにこのメソッ
ドを呼び出す文を追加し実行せよ。
static tasu( ) {
String s = "2 つの和は"+ (a+b);
s;
}
● 演習1-3 int 型の変数n を引数に持ち、n 個の*と改行を表示する返り値なしの以下のメ
ソッドstar について下線部を埋めて追加せよ。またmain メソッドにこのメソッドを呼び出す文
(引数等は、自分で好きに決めてよい)を追加し実行せよ。
static star(int n) {
for (int i = n; ; i--) {
System.out.print("*");
}
System.out.println();
}
0560557NGNG
● 演習1-4 int 型の変数n を引数に持ち、n 個の*をString 型として返す以下のメソッドstar2
を下線部を埋めて追加せよ。またmain メソッドにこのメソッドを呼び出す文(引数等は、自分
で好きに決めてよい)を追加し実行せよ。
static star2(int n) {
String s = "";
for (int i = n; i > 0 ; i--) {
;
}
s;
}
● 演習1-5 int 型の変数i を引数に持ち、i が10 より大きければi を10 にし、i が0 より小
さければi を0 にしi をint 型として返すメソッドrange を追加せよ。またmain メソッドにこ
のメソッドを呼び出す文(引数等は、自分で好きに決めてよい)を追加し実行せよ。
3
● 演習1-6 int 型の変数n とString 形の変数str を引数に持ち、n 個のstr をString 型とし
て返すメソッドrepeat を追加せよ。またmain メソッドにこのメソッドを呼び出す文(引数等は、
自分で好きに決めてよい)を追加し実行せよ。
● 演習1-7 int 型の変数n を引数に持ち、1 行目からn 行目まで、i 行目ではi 個の*を表示す
る返り値のないメソッドtriangle を追加せよ。ただし、上のメソッドrepeat を使うこと。また
main メソッドにこのメソッドを呼び出す使う文(引数等は、自分で好きに決めてよい)を追加
し実行せよ。(2 点)
例n=3 の場合
*
**
***
0561デフォルトの名無しさんNGNG
以上ですどなたかおながいします・・・
0562デフォルトの名無しさんNGNG
演習1-1
�@

演習1-2
public static String tasu(int a, int b) {
String s = "2 つの和は"+ (a+b);
retrurn s;
}

main メソッドへの追加
System.out.println(tasu(5, 15));

演習1-3
public static void star(int n) {
for (int i = n; i >= 0; i--) {
System.out.print("*");
}
System.out.println();
}

mainメソッドへの追加
star(15);
0563デフォルトの名無しさんNGNG

演習1-4
public static void star2(int n) {
String s = "";
for (int i = n; i > 0; i--) {
s += "*";
}
return s;
}

mainへの追加
System.out.println(star2(15));

演習1-5
public static int range(int i) {
if (i > 10) {
i = 10;
} else if (i < 0) {
i = 0;
}
return i;
}

mainへの追加
System.out.println(range(15));
System.out.println(range(5));
System.out.println(range(-5));
0564デフォルトの名無しさんNGNG

演習1-6
public static void repeat(int n, String str) {
String s = "";
for (int i = n; i > 0; i--) {
s += str;
}
return s;
}

mainへの追加
System.out.println(repeat(15,"+");

演習1-7
public static void triangle(int n) {
for (int i = 1; i <= n; ++i) {
System.out.println(repeat(i, "*");
}
}

mainへの追加
triangle(3);
0565デフォルトの名無しさんNGNG
ありがとうございますだ〜
0566デフォルトの名無しさんNGNG
>>565
増田じゃない
益岡です
0567全然わからないのですがNGNG
>>520>>521>>523
ソース教えてください
0568デフォルトの名無しさんNGNG
public class Ex520 {
public static void main(String args[]){
if(args.length==2){
try{
int N=Integer.parseInt(args[0]);
int P=Integer.parseInt(args[1]);
System.out.println("N:"+args[0]+" P:"+args[1]);
if(N<P){
System.out.println("N<Pなので終了");
}
else{
for(int i=P;i<=N;i+=P){
System.out.print(i+" ");
}

}
}
catch(NumberFormatException e){
System.out.println("引数には数字を入力");
}
}
else{
System.out.println("2つの引数に数字を入力");
}
}

}
0569デフォルトの名無しさんNGNG
public class Ex521 {
public static void main(String args[]){
if(args.length==1){
try{
double count=1.0;
double number=Double.parseDouble(args[0]);
System.out.println("number:"+args[0]);
while(Math.pow(10.0,count)<=number){
count++;
}
System.out.println("桁数は"+(int)count);

}
catch(NumberFormatException e){
System.out.println("引数には数字を入力");
}
}
else{
System.out.println("1つの引数に数字を入力");
}
}
}
0570デフォルトの名無しさんNGNG
>>540 GUIだが首を突っ込んで、問1。
import java.awt.*; import java.awt.event.*;
public class RecursiveRect extends Frame {
public RecursiveRect() {
super("Recursive Rect");
setSize(600, 600);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
}
public void paint(Graphics g) {
g.setColor(Color.red);
drawRect(g, new Point(50, 50), new Point(550, 50), new Point(550, 550), new Point(50, 550), 10);
}
void drawRect(Graphics g, Point p0, Point p1, Point p2, Point p3, int n) {
if ((n --) > 0) {
g.drawLine(p0.x, p0.y, p1.x, p1.y);
g.drawLine(p1.x, p1.y, p2.x, p2.y);
g.drawLine(p2.x, p2.y, p3.x, p3.y);
g.drawLine(p3.x, p3.y, p0.x, p0.y);
drawRect(g,
new Point((p0.x + p1.x) >> 1, (p0.y + p1.y) >> 1),
new Point((p1.x + p2.x) >> 1, (p1.y + p2.y) >> 1),
new Point((p2.x + p3.x) >> 1, (p2.y + p3.y) >> 1),
new Point((p3.x + p0.x) >> 1, (p3.y + p0.y) >> 1), n);
}
}
public static void main(String[] args) { new RecursiveRect().setVisible(true); }
}
0571最後NGNG
>>567
public class Ex523 {
public static void main(String args[]){
if(args.length==1){
try{
System.out.println("amount;"+args[0]);
int totalamount=Integer.parseInt(args[0]);
int[] noso=new int[5];
int[] money={10000,1000,100,10,1};
for(int i=0;i<noso.length;i++){
while((totalamount - (money[i]))>=0){
noso[i]++;
totalamount=totalamount-money[i];
}
}
for(int i=0;i<money.length;i++){
System.out.println(money[i]+"円:"+noso[i]);
}

}
catch(NumberFormatException e){
System.out.println("引数には数字を入力");
}
}
else{
System.out.println("1つの引数に数字を入力");
}
}
}
0572570NGNG
>>568-571
すまん挟んじまった。陳謝m(_ _)m
0573デフォルトの名無しさんNGNG
>>572
3つ目の問題に20分もかけた自分が悪いです( ̄ー ̄)
なかなかいいアルゴリズムが思いつかなくて・・・

どなたか綺麗なソースコードをキボン
0574572NGNG
>>571=573
十分キレイだと思われ。エラー処理が多いだけ。
ちなみに漏れのは、
public class Q523 {
public static void main(String[] args) throws Exception {
if (args.length != 1) { System.err.println("Usage: java Q523 amount"); System.exit(1); }

int amount = Integer.parseInt(args[0]);
int[] types = {10000, 1000, 100, 10, 1};
for (int i = 0; i < types.length; i ++) {
int numMoney = amount / types[i];
System.out.println(types[i] + "yen * " + numMoney);
amount -= types[i] * numMoney;
}
}
}
0575573NGNG
>>574
おー、ありがとうございます。
すごい簡潔にまとまってますね。アルゴリズムもさっぱりしてるし。
てか、int型は小数点以下切捨てでしたね・・・
勉強になりました。出直してきます。それにしても
人の書いたコードっていろんな意味で参考になりますね
0576全然わからないのですがNGNG
ありがとうございました^^
0577デフォルトの名無しさんNGNG
これで十分じゃない?

System.out.println("10000円 " + (amount / 10000));
System.out.println("1000円 " + (amount / 1000) % 10);
System.out.println("100円 " + (amount / 100) % 10);
System.out.println("10円 " + (amount / 10) % 10);
System.out.println("1円 " + amount % 10);

応用できないが、要件は満たしている。
0578課題NGNG
○整数NとPを入力し、1からNまでの間にあるPの倍数をリストする。 
考え方:NがPより小さければ終了(リスト不可能)。そうでなければ、int型の変数iをPから始めてPずつ増やしながら(i=i+P)画面に表示する。iがNを越えたら終了。
println( ) を使うと画面上で改行が入るので、数字を続けてリストするために print( ) を使うこと。
while文、for文のどちらを使ってもよい。
0579デフォルトの名無しさんNGNG
>>568>>569>>574
キー入力どうしたらいいんですか?
0580574NGNG
>579
>支払う金額はコマンドライン引数で与える。>>523
問題嫁〜(・A・)
0581デフォルトの名無しさんNGNG
>>523
コマンドライン引数って何?
0582デフォルトの名無しさんNGNG
>>581
argvで取得できる奴だと思われ
0583デフォルトの名無しさんNGNG
>581
おまえ、どこの学校でいったい何をならっているんだ?
授業なんか一回もでていないだろう。
もし、専門学校なら見込みないから学校やめれば?
大学なら単位あきらめろ。
死んでもプログラマにはなるなよ。
0584デフォルトの名無しさんNGNG
>>578
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Homework1 {

public static void main(String[] args) throws Exception {
String n_string = null;
String p_string = null;
int n;
int p;
System.out.println("Nの値を入力してください");
n_string = new BufferedReader(new InputStreamReader(System.in)).readLine();
n = validate(n_string);
System.out.println("Pの値を入力してください");
p_string = new BufferedReader(new InputStreamReader(System.in)).readLine();
p = validate(p_string);
if(n>=p){
for(int i=1;p*i<=n;i++){
System.out.print(p*i+"/");
}} }
private static int validate(String s) {
try {
return Integer.parseInt(s);
}
catch (Exception e) {
return 0;
}}}
0585デフォルトの名無しさんNGNG
if(n>=p)→if(n>=p&&p!=0)
0586デフォルトの名無しさんNGNG
>>581
バカ丸出しの>>583の言うことなんか気にするな。
コマンドライン引数なんてプログラミングの本質では無い。


でも、コマンドライン引数を知らなくてもいいのは小学生までだよね〜。
0587山崎 渉NGNG
(^^)
0588デフォルトの名無しさんNGNG
だれかRMIでclassloader使って、リモートでクラス作ってそれを動かすプログ
ラム作ってみろ!!(笑、やれるなら)
0589デフォルトの名無しさんNGNG
>>588
はぁ、余裕なんですけど。
0590デフォルトの名無しさんNGNG
>>589
余裕ならやってみろよ。どうせ、余裕とか言って、588の策にのせられる
とか適当な事言ってやらないんだろ?俺は、やれないのにそんな事言
べきじゃないと思うね
0591デフォルトの名無しさんNGNG
588の問題を正確に記述しろ。
それならやってやる。
特に「リモートでクラス作る」をきちんと定義しろ。
0592デフォルトの名無しさんNGNG
>>591
0593名梨産NGNG
>リモートでクラス作ってそれを動かす
分散処理使っていいんだったら屁みたいに簡単にできるんだけど。。。
0594588NGNG
>>590
本当に乗ってくるヤシがいるとは・・・・、作って欲しいのは、
1、サーバ側でクラスファイルをバイナリデータにして、メソッドを通して
  リモートに渡す
2、リモートでもらったバイナリデータをリフレクションとかクラスローダー
  を使いつつ、利用可能な状態にする。
3、サーバ側がリモートで使えるようになったクラスをオブジェクトとして
  普通に使えるようにする。
  例えば〜、そうだな、渡すクラスの内容は適当でいいや、足し算とか、
  平方根を求めるとかでも、
  さァ、できるかなa〜?
0595デフォルトの名無しさんNGNG
サーバとクライアントが逆じゃないのか?

ローカル側がクライアントでリモート側がサーバとして
ローカルからリモートサーバにコードを送り込んで
リモートサーバ上でインスタンスを作成して、
ローカルからリモートのオブジェクトを呼び出すのが普通だと思うが。
0596588NGNG
>>595
まぁ確かにそうなんだけど、俺はサーバクライアント型のネットワークを
想定しているから呼び方が逆になっちゃうんだよね。その通り!!
そう考えてもらっていいよ。
0597デフォルトの名無しさんNGNG

ちょっと、問題の質問です
1.SessionBeanつかうのは「RMIつかって」って言うのに反していますか?

2.クライアントには、取得するオブジェクトの情報はまるでないのですか?
0598588NGNG
>>597
俺はSessionbeanってのはよく知らないんだが、あんまし難しくされる
と分かんなくなっちゃうから、ピュアRMIでお願いしたい。
あと、クライアントには雛形ぐらいの情報は持たせておいてもいいが、
できればなんでも渡せるのが理想。
0599デフォルトの名無しさんNGNG
>>598
なんでも渡せるってことは
Object型でいいですね?
0600588NGNG
>>599
YES、Sir!!
まじやってくれんの?ありがとう。頼み方悪くてごめんね。
0601デフォルトの名無しさんNGNG
サーバ側その1

package net2ch;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface ClassRepository extends Remote {
public void putClassData(String name, byte[] b) throws RemoteException;
public Object instantiate(String classname) throws RemoteException;
}
0602デフォルトの名無しさんNGNG
サーバ側その2
package net2ch;
import java.util.HashMap;
import java.util.Map;
public class RemoteClassLoader extends ClassLoader {
private Map map = new HashMap();
protected Class findClass(String name) throws ClassNotFoundException {
byte[] b = loadClassData(name);
if (b == null) {
throw new ClassNotFoundException("class not found");
}
return defineClass(name, b, 0, b.length);
}
private byte[] loadClassData(String name) {
return (byte[]) map.get(name);
}
public void putClassData(String name, byte[] b) {
map.put(name, b);
}
}
0603デフォルトの名無しさんNGNG
サーバ側その3
package net2ch;
import java.rmi.Naming;
import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class RmiServer extends UnicastRemoteObject implements ClassRepository {
private RemoteClassLoader loader = new RemoteClassLoader();
public RmiServer() throws RemoteException {
super();
}
public void putClassData(String name, byte[] b) throws RemoteException {
loader.putClassData(name, b);
}
public Object instantiate(String className) throws RemoteException {
try {
Class clazz = loader.loadClass(className);
return clazz.newInstance();
} catch (Exception e) {
e.printStackTrace();
throw new RemoteException(e.getMessage());
}
}
続く
0604デフォルトの名無しさんNGNG
サーバ側その3続き
public static void main(String[] args) {
if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
try {
ClassRepository obj = new RmiServer();
Naming.rebind("///RmiServer", obj);
System.out.println("RmiServer bound in registry");
} catch (Exception e) {
System.out.println("RmiServer err: " + e.getMessage());
e.printStackTrace();
}
}
}
0605デフォルトの名無しさんNGNG
クライアント側もほしい?
0606588NGNG
>>605
おねがい(^^)

0607デフォルトの名無しさんNGNG
クライアントその1
package net2ch.client;
import java.io.*;
import java.rmi.*;
import net2ch.ClassRepository;
public class RmiClient {
public static void main(String[] args) {
System.setSecurityManager(new RMISecurityManager());
try {
File f = new File("bin/net2ch/client/Adder.class");
byte[] b = new byte[((int)f.length())];
InputStream is = new FileInputStream(f);
is.read(b);
ClassRepository repository = (ClassRepository) Naming.lookup("///RmiServer");
repository.putClassData("net2ch/client/Adder", b);
Object object = repository.instantiate("net2ch/client/Adder");
int x = ((Adder)object).add(3,5);
System.out.println("x = " + x);
} catch (Exception e) {
e.printStackTrace();
}
}
}
0608デフォルトの名無しさんNGNG
クライアントその2
package net2ch.client;
import java.io.Serializable;
public class Adder implements Serializable {
public int add(int a, int b) {
return a + b;
}
}
0609デフォルトの名無しさんNGNG
rmic とか rmiregistry の使い方ぐらいは知ってるんだろうな。
そこまで説明しないぞ。

あと今回のはリモートメソッドの呼び出しはやっていないから、
本当の意味では宿題の答えになってない。
リモートメソッド呼び出しまでやってほしいなら、
俺をその気にさせろ。
0610588NGNG
>>609
rmicとかrmiregistryとかは大丈夫・・・だと思う。

どうやったらその気になってくれんの?
0611588NGNG
                   / ヽ        / ヽ
               /   ヽ___/   ヽ
            /   井\  l___l /\
             |  井   ●  |    |  ●  |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       へ    |   へ       ヽ   /     | < >>608の続きまだ〜?
        \\  \  \\    ヽ/     /   \_____________
チン        \\  .> \\          ヽ
   チン      \\/    \\  _       |
      \ ̄ ̄ ̄ ̄ ̄ ̄ ̄/  / ̄   ヽ    /   _
        \回回回回回/ ̄ ̄ヽ        / ̄ ̄ /|
         \___/      ヽ____/  /  |
                               /   |
                              /     |

0612デフォルトの名無しさんNGNG
601-608 は手元で動いたか?
なぜまずいかわかったか?
0613デフォルトの名無しさんNGNG
まあいいや、リモートメソッドの呼び出しもやってやる。
3つのファイルを入れ替えるぞ。
サーバ側はClassRepository.javaとRmiServer.javaだ。
クライアント側はRmiClient.javaだ。
0614デフォルトの名無しさんNGNG
ClassRepository.javaの差し替え
package net2ch;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface ClassRepository extends Remote {
public void putClassData(String name, byte[] b) throws RemoteException;
public int instantiate(String classname) throws RemoteException;
public void destroy(int oid) throws RemoteException;
public Object invoke(int oid, String methodName, Class[] parameterTypes, Object[] args) throws RemoteException;
}
0615デフォルトの名無しさんNGNG
RmiServer.javaの差し替えその1
package net2ch;
import java.lang.reflect.Method;
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
import java.util.*;
public class RmiServer extends UnicastRemoteObject implements ClassRepository {
private RemoteClassLoader loader = new RemoteClassLoader();
int nextOid = 1;
private Map repository = new HashMap();
public RmiServer() throws RemoteException {
super();
}
public void putClassData(String name, byte[] b) throws RemoteException {
loader.putClassData(name, b);
}
public int instantiate(String className) throws RemoteException {
try {
Class clazz = loader.loadClass(className);
Object o = clazz.newInstance();
repository.put(new Integer(nextOid), o);
return nextOid++;
} catch (Exception e) {
e.printStackTrace();
throw new RemoteException(e.getMessage());
}
}
続く
0616デフォルトの名無しさんNGNG
RmiServer.javaの差し替えその2
public void destroy(int oid) throws RemoteException {
repository.remove(new Integer(oid));
}
public Object invoke(int oid, String methodName, Class[] parameterTypes, Object[] args) throws RemoteException {
try {
Object o = repository.get(new Integer(oid));
Method m = o.getClass().getMethod(methodName, parameterTypes);
return m.invoke(o, args);
} catch (Exception e) {
e.printStackTrace();
throw new RemoteException(e.getMessage());
}
}
続く
0617デフォルトの名無しさんNGNG
RmiServer.javaの差し替えその3
public static void main(String[] args) {
if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
try {
ClassRepository obj = new RmiServer();
Naming.rebind("///RmiServer", obj);
System.out.println("RmiServer bound in registry");
} catch (Exception e) {
System.out.println("RmiServer err: " + e.getMessage());
e.printStackTrace();
}
}
}
0618デフォルトの名無しさんNGNG
RmiClient.javaの差し替え
package net2ch.client;
import java.io.*;
import java.rmi.*;
import net2ch.ClassRepository;
public class RmiClient {
public static void main(String[] args) {
System.setSecurityManager(new RMISecurityManager());
try {
File f = new File("bin/net2ch/client/Adder.class");
byte[] b = new byte[((int) f.length())];
InputStream is = new FileInputStream(f);
is.read(b);
ClassRepository repository = (ClassRepository) Naming.lookup("///RmiServer");
repository.putClassData("net2ch/client/Adder", b);
int o = repository.instantiate("net2ch/client/Adder");
Object x = repository.invoke(o, "add",
new Class[] { int.class, int.class },
new Object[] { new Integer(3), new Integer(5)});
System.out.println("x = " + x);
repository.destroy(o);
} catch (Exception e) {
e.printStackTrace();
}
}
}
0619588NGNG
>>618
マジであなた様は神です。ゴッドです。感謝感激雨あられ!!
サンキョー!!
0620時代は個人主義NGNG

http://osaka.yomiuri.co.jp/new_feature/kokoro/jyuku06.htm

社会福祉法人「いのちの電話」の斎藤友紀雄事務局長は、「『いじめ』は
世界中で起きていますが、日本の場合、その一番大きな原因は、異質なも
のを認めないという精神文化に根ざしていると思います。偏差値教育や核
家族化によって孤独を強いられた子どもたちは、必死に自分の居場所を求
めるのですが、性格や能力が集団と調和しない子は、集団から排除されて
しまう。つまり、村意識が働いて、村八分にされてしまうのです」と語る。

<差別いじめをなくそう>
日本国憲法(国のあり方を定めた法)は、個人主義を定めています。
それは、戦前、全体主義だったわが国が、悲惨な戦争に突入し敗戦したと
いう苦い経験の反省に基づきます。

別にみなが一緒じゃなくてもいいでしょ?
みなが一緒じゃないと安心できない集団がいて、その集団が
異質分子を排斥しようとする。


0621時代は個人主義NGNG

A型は仲間を作ろうとする時、自分と価値観やリズムが同じ人ばかりを引
き寄せて、波長の合わない人々を避けてしまう傾向があります。そこには、A型
の、周囲に波風を起こしたくない、できるだけ安定した環境を作っておきたい、と
いう思いが働くからです。そんな風にしているうちに、気がついてみたらA型ば
かりの集団になっていた、ということはよくあります。
価値観がある程度同じ方向に向かっていることは大切なことですが、あまり同じ
ような考えの人ばかりが集まることは危険です。和気合いあいのムードにすっ
かり慣れて、「井の中の蛙」になってしまう恐れがあるからです。
A型は、周囲と協調して現状を安定させたい面と、常に向上心を持って現状を
脱皮したい面の両方を、バランスよく保っていくことで、上手に成長していくので
す。
自分と違う考えの人は、衝突も激しく起こるけれど、自分に良い刺激を与え、視
野を広げることにもなるということを考えてみて下さい。
また、人間関係にもけじめをつけようとするA型は、お客と店員など、立場で態
度を大きく変えたりすることがありますが、行き過ぎれば、やはり好ましくない行
動表現に見えます。
0622デフォルトの名無しさんNGNG
チェイン法を用いて,1000 個の値を格納するハッシュ表を構成したい.それぞれの値は,適当
な自然数とし,乱数で生成するものとする.
ハッシュ関数を何種類か用いて,それらを比較せよ.
この問題を誰かといてください。
0623デフォルトの名無しさんNGNG
>>622
教官から、ハッシュ関数の例を与えられなかったのか?
0624デフォルトの名無しさんNGNG
>>623
はい、与えられなかったんです。
0625デフォルトの名無しさんNGNG
>>624
じゃ、そこだけは自分で考えろ。
0626デフォルトの名無しさんNGNG
うっせー教えろ
0627デフォルトの名無しさんNGNG
>>625
はい、わかりました。がんばってみます。
0628デフォルトの名無しさんNGNG
STEP1:見通しつけ

public class HashTable{

 //テスト用関数
 public static void main(String args[]){
   HashFunction[] functions = new HashFunction[]{new FooHashFunction(),new BarHashFunction()...};
   //FooHashFunction implements HashFunctionなどは君が作ってくだせえ
   int seed =/*擬似乱数が毎回同じ値を出すように、適当な数字を与えてくだせえ*/;

   for(int i = 0 ; i < functions.length;i++){
    java.util.Random rand = new java.util.Random(seed);
    HashTable table = new HashTable(function[i]);
    //ここでrand.nextInt()を1000回put

    //1000回putしたテーブルの内部状態をレポートとして出力
    System.out.println(table.toString());
   }  
 }
 private java.util.List[] chains = new java.util.ArrayList[/*適当なチェイン数*/];
 private HashFunction function;
 public HashTable(HashFunction function){this.function = function;}
 public void put(int index,int value){/*値挿入*/}
 public String toString(){/*状態ダンプ*/}
}

public interface HashFunction{public int hashCode(int value);}

ココから先は、自分でやってくれないかなあ…と淡い期待。ねむいし。
0629デフォルトの名無しさんNGNG
public void put(int value){/*「値挿入」の実装*/
 int hashcode = function.hashCode(value);
 int index = hashcode/chains.length;
 if(chains[index] == null)
  chains[index]= new java.util.ArrayList();
 chains[index].add(value);
}
0630デフォルトの名無しさんNGNG
>>628
本当にありがとうございました。自分ではぜんぜんわからなかったので、本当に助かりました。
またわからないことがあったらここに来るかもしれないのでまたその時はよろしくお願いします。
0631デフォルトの名無しさんNGNG
public String toString(){/*「状態ダンプ」の実装例*/
//どんなレポートがほしいかによるので、それにしたがって自作してください
 StringBuffer buf = new StringBuffer();
 buf.append(function.getClass().getName()+"による結果\n");
 for(int i = 0 ; i < chains.length;i++)
  buf.append("chains["+i+"]="+chains[i]+"\n");
 return buf.toString();
}

眠いので超テヌキ。
0632デフォルトの名無しさんNGNG
STEP2:実装
宿題ならこれで充分かモナ。

STEP3:HashFunctionの各種実装作成
…がんばれ。

これでコンパイルとおるかどうかは確認してないので、勘弁ね。
今適当に書いただけだから。
0633デフォルトの名無しさんNGNG
本当にありがとうございました。
0634デフォルトの名無しさんNGNG
ウソ) int index = hashcode/chains.length;
ホント)int index = hashcode%chains.length;

ウエエエン。俺はなんて馬鹿なんだ・・・鬱山車脳。


0635デフォルトの名無しさんNGNG
みなさんアプレットからアプリケーションへプログラムを書き換えるにはどこを
どう変更したらうまくいくのか教えてもらえませんか?以下のプログラムをアプリ
ケーションにしたいのですが、やり方がさっぱりわかりません。
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class Typing extends Applet {
private Color mColor; // 現在の色
private int number; //今打っている文字は何文字目?
private int Textnum; //出題する問題番号取得用
private int typenum; //総タイプ数
private int missnum; //ミスタイプ数
static Dimension d; //領域のサイズ取得用
private String[] Text = {"class","private","public","void","int"};
public void init() {
Dimension d = getSize();
typenum = 0;
missnum = 0;
getNextText();
// キーイベントを扱うため,キーリスナを登録.
addKeyListener(new MyKeyListener());
}
0636635NGNG
public void paint(Graphics g) {
Dimension d = getSize(); // 描画色を設定して,問題を描画.
for(int i=0;i<Text[Textnum].length();i++){
if (i<number){ g.setColor(Color.red);
} else { g.setColor(Color.black); }
g.drawString(""+Text[Textnum].charAt(i),(i*6)+10, d.height/2);
}
g.drawString("Type :"+Integer.toString(typenum),10,10);
g.drawString("Miss :"+Integer.toString(missnum),10,20);
}// 文字を取得
public char getChar() {
return Text[Textnum].charAt(number);
}
public void incNumber() {
number = number + 1;
if (number==Text[Textnum].length()){
number = 0;
getNextText();
}
repaint();
} // 打った文字数を増加




0637635NGNG
public void getNextText() {
Textnum = 0;
do Textnum = (int)(Math.random()*10);
while (Textnum>=Text.length);
}
public void inctype() { typenum = typenum + 1; repaint(); }
public void incmiss() { missnum = missnum + 1; repaint(); }
}// Typingアプレット用のリスナクラス
class MyKeyListener implements KeyListener {
// キーが押されたときの処理
public void keyPressed(KeyEvent e) {
// キーイベントを発生したオブジェクトを取り出す.
Typing Tp = (Typing)e.getSource();
// 押されたキーの文字を取り出す.
char ch = e.getKeyChar();

Tp.inctype(); //タイプ文字数を増やす

// 押されたキーと次に打つべき文字が等しいか?
if (ch == Tp.getChar()) {
Tp.incNumber();
} else { Tp.incmiss(); }//間違えていたらミス数を増やす。
} // その他のキーイベントには対応しない.
public void keyReleased(KeyEvent e) { }
public void keyTyped(KeyEvent e) { }
}
0638デフォルトの名無しさんNGNG
Javaアプレットについてなのですが、
JavaソースファイルとHTMLファイルを作りました。
JavaソースファイルをMS−DOSプロンプトでコンパイルしました。
そして、アプレットビューアでHTMLファイルを開きました。
MS−DOSプロンプトに
xxx>appletviewer tt33.html・・・(1)
とやって。

WWWブラウザでtt33.htmlファイルを開くには
MS−DOSプロンプトに
どういうコマンド名を使えばいいのでしょうか?
0639デフォルトの名無しさんNGNG
ブラウザのコマンドにファイル名。
0640638 NGNG

ブラウザはIE5.5を使用しているのですが、
コマンド名は>>638の(1)のようないいまわしでは
どう記入すればいいんでしょか?
0641デフォルトの名無しさんNGNG
>>640
普通にIEのアドレス欄に
「C:\・・・・\tt33.html」で、いいのじゃ
0642デフォルトの名無しさんNGNG
>>639>>641
ありがとうございました。
おかげでファイルを開くことができました。
0643デフォルトの名無しさんNGNG
>>635
public static void main(String args[]){
 java.awt.Frame f = new java.awt.Frame();
 Typing t = new Typing();
 f.add(t);
 t.init();
 f.show();
}
表示するだけなら、こんなmainを追加すればいいんじゃないのかな。
0644635NGNG
>>643
レスありがとうございます。
それはそのプログラムを付け足せば、ほかをいじらなくてもアプリケーションとして
成り立つということでしょうか。できれば、プログラム全体をアプリケーション
に書き換えたいのですが、今現在ネットで調べながら、やってますが、お手上げ状態
です。
0645デフォルトの名無しさんNGNG
>>644
そだよ。
このメインだとJVMの停止方法がないので、それは自分で探してくり。
0646635NGNG
>>645 即レスありがとうございます
0647デフォルトの名無しさんNGNG
<!-- JavaApplet-->
<p align="center">
<applet
code="ImageScroll.class" width=600 height=150>
<param name=backcolor value="255,255,255">
<param name=backimage value="haikei2.gif">
<param name=image value="sakura.jpg">
<param name=either value="1">
<param name=speed value="10">
</applet>

上記のプログラムのImageScroll.classファイルを開きたいのですが、
ダブルクリックをしても、右クリックをして「開く」を選択しても、
「有効なWin32アプリケーションではありません」
というメッセージが返ってくるだけで開くことができません。
どうすればよいのですか。
0648デフォルトの名無しさんNGNG
開くってのが意味わからん。
バイナリエディタでも使えば?
0649デフォルトの名無しさんNGNG
>>647
「逆コンパイラ Java」でグーグル検索しる。
0650デフォルトの名無しさんNGNG
>>647
開くのに成功したら、何が起こることを期待している?。
0651デフォルトの名無しさんNGNG
>>647
今さらながらだが、この質問って 初心者スレの
コイツ?↓

471 名前:デフォルトの名無しさん 投稿日:03/08/07 23:26
1度閉じたJavaのソースプログラムを組んだファイルの開き方を教えて下さい。

1度閉じた.classファイルや.javaファイルの開き方がわかりません
0652デフォルトの名無しさんNGNG
問題です お願いします

JSPで2つのテキストボックスに入力された2つの日付
 (例 20030815 のように8桁の数字:String型)
について

1.テキストボックス1に入力された日付と
 2に入力された日付を比べて、
時間的に 1<2 が成立したら true
だめなら false を返すメソッドを作成しなさい。

 まず比較するまえに、nullチェックをしてください。

2.2つの日付の差をとるメソッドを作成しなさい。

JSPからパッケージを呼び出す方法を取りたいので、
Servletでお願いします。
0653山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0654デフォルトの名無しさんNGNG
http://examples.oreilly.com/javarmi/javarmi_examples.zip
上記サンプルのコンパイルはできるのですが、実行すると
Exception in thread "main" java.lang.NoClassDefFoundError: ViewFile
と言われます。classpathとかいろいろいじったのですがうまくいきません。
誰か教えて。JREは1.4.1_04です。
0655デフォルトの名無しさんNGNG
654です。
すいません。解決しました。
他のスレで聞いちゃいました。。。
0656デフォルトの名無しさんNGNG
Javaで二分木をやりたいんですが、削除の仕方がよくわかりません

削除をする際の情報として、「削除されるのは親からみて左右どちらの子か?」と
「削除対象はいくつの子を持っているか?」を知りたいんですが
「親から見て左右どちらの子が削除されたか」を得る方法がわかりません

Cでやった時は、親のメンバleftもしくはrightへのポインタを持っていたのですが
こういうことはJavaでは無理でしょうか?

leftの指す要素へのポインタではなくて、そのleftそのものを指したいんです。
つまりCで言うところのダブルポインタってやつでしょうか?
0657デフォルトの名無しさんNGNG
>>656

はぐ、はぐはぐはぐ
はぐはぐ?はぐはぐはぐ

はぐはぐはぐ・・・はぐw
■ このスレッドは過去ログ倉庫に格納されています