【Java編】 学校の宿題は俺にやらせろ 【Java編】
■ このスレッドは過去ログ倉庫に格納されています
0001糞すれクリエータ
NGNGただGUIかんけーはめんどクセーから、放置するぞ!
☆丸投げ歓迎 AGE進行☆
0524デフォルトの名無しさん
NGNGマルチなのか何なのかわかんないけど
そんなもんかんたんだろ
上のけた数引いて全部その桁で割ればいい
0525教えてください3
NGNG0526デフォルトの名無しさん
NGNGx:入力値
int a=x/10000;//1万円
int b=(x-a*10000)/1000;//千円
0527516
NGNGランダムに表示された文字をうって、それがあってるか判定できれば
どんなにしょぼいものでもいいので。
アプリケーションでなんとか・・・お願いします
0528デフォルトの名無しさん
NGNGDOS窓上でいいの?それならなんとか・・
0529デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <string.h>
char* CreateSample() {
char* sample = malloc( 100 * sizeof(char) );
static char* s[] = { "I", "You" };
static char* v[] = { "love", "hate" };
static char* o[] = { "hiroko", "megumi", "michiko", "akiko", "satoko" };
sprintf( sample, "%s %s %s.", s[rand()%2], v[rand()%2], o[rand()%5] );
return sample;
}
int main( int argc, char* argv[] ) {
srand( time(0) );
char* sample;
char buf[100];
do {
sample = CreateSample();
printf( ">>> %sn### ", sample );
gets(buf);
printf( "%sn", strcmp( buf, sample ) == 0 ? "ok." : "miss!" );
free( sample );
} while( !feof( stdin ) );
return 0;
}
0530デフォルトの名無しさん
NGNGimport java.io.BufferedReader;
import java.io.InputStreamReader;
public class TypingSoft {
public static void main(String[] args) {
try {
int level = Integer.parseInt(args[0]);
if(level<1)throw new Exception();
new TypingSoft(level);
}
catch (Exception e) {
System.out.println("レベルを1以上の数値で入力してください");
}}
public String create(int digit) {
StringBuffer pass = new StringBuffer(digit);
for (int i = 0; i < digit; i++) {
int choice = (int) (Math.random() * 3);
switch (choice) {
case 0 :
pass.append((char) ((int) (Math.random() * 10) + 48));
break;
case 1 :
pass.append((char) ((int) (Math.random() * 26) + 65));
break;
case 2 :
pass.append((char) ((int) (Math.random() * 26) + 97));
break;
}}return pass.toString();}public TypingSoft(int level){String in=null;System.out.println("Ctrl+Cで終了");try{while(true){String a=create(level);System.out.println(a);
in=new BufferedReader(new InputStreamReader(System.in)).readLine();if(!a.equals(in))System.out.println("×");}}catch(Exception e){}}}
0531529
NGNG0532516
NGNG0534デフォルトの名無しさん
NGNGまずは「エラーですぎ!!」というそのソースコードを
だしてみて。話はそれからだ。
0535初心者
NGNG●以下の条件を持つプログラムを構築しなさい
○「カード」オブジェクトを定義するCardクラス、(ジョーカーを除く)52枚のカードからなる「デッキ」を定義するDeckクラスを定義しなさい
○アプリケーションあるいはアプレットを利用して、5枚のカードをデッキから取り出すプログラム、(例えばそのプログラムの名前はCardTestクラス)、を作成しなさい
○カードおよびデッキの初期化には静的変数により実施しなさい
○カードクラスの「インスタンスメソッド」として番号とマークを問い合わせるメソッドを用意しなさい
★余力があれば、次の要件を付け加えなさい
○5枚のカードを取り出す際、ランダムになるよう、あらかじめカードをシャッフルする機能をDeckのクラスメソッドとして実現しなさい
○カードのソーティングを実施し、ポーカーの役がわかるようにしなさい
○好きなカードを「ホールド」し、それ以外を引きなおして、再度、役をチェックするようにしなさい。その際、アプレットとAWTなどに用意されている機能を利用しなさい
というものです。
よろしくお願いします
0536デフォルトの名無しさん
NGNGこれはどう有意味なのでしょうか??
引数を静的変数を引数に持たせるという意味?
0537535
NGNG静的変数のところに
すべてのオブジェクトから共有される変数(クラスそのものに結びついているもの)
→static型で宣言
とメモってありました。
0538デフォルトの名無しさん
NGNGはげしくやる気のなくなる宿題だなあ。
>○カードおよびデッキの初期化には静的変数により実施しなさい
訳の分からない縛り。
>○アプリケーションあるいはアプレットを利用して、5枚のカードをデッキから取り出すプログラム、(例えばそのプログラムの名前はCardTestクラス)、を作成しなさい
アルゴリズムとGUIをごっちゃに出題するのはどうかと思う。
>○カードのソーティングを実施し、ポーカーの役がわかるようにしなさい
こんなの初心者が「余力」でできるわけないだろう。
>○5枚のカードを取り出す際、ランダムになるよう、あらかじめカードをシャッフルする機能をDeckのクラスメソッドとして実現しなさい
Collections.shuffle()呼んで煙に巻いてやれ。出題者知らないと見た。
0539初心者
NGNGhttp://a.jmpd.com/upload/show.php?pid=85-A&db=nakama&type=1
2.以下のプログラムは円をdrawLineのみで描くプログラムである。
DsiplayCircle.java
import java.applet.Applet ;
import java.awt.* ;
public class DisplayCircle extends Applet {
float PI=(float)Math.PI ;
int winWidth=300, winHeight=300 ;
float circRadius=100.0f ;
public void init() {
setBackground(Color.lightGray) ;
setForeground(Color.red) ;
resize(winWidth,winHeight) ;
0540初心者
NGNGpublic void paint(Graphics g) {
float r=circRadius,delta,theta,x0,y0,x1,y1 ;
float xc,yc ;
int nPoints =200 ;
xc=winWidth/2 ;
yc=winHeight/2 ;
x0=0.0f ;
y0=0.0f ;
for(int k=0;k<nPoints;k++) {
if(k==0) {
theta=0.0f ;
x0=r*(float)Math.cos(theta)+xc ;
y0=r*(float)Math.sin(theta)+yc ;
}
theta=2.0f*PI*(float)(k+1)/(float)nPoints ;
x1=r*(float)Math.cos(theta)+xc ;
y1=r*(float)Math.sin(theta)+yc ;
g.drawLine((int)x0,(int)y0,(int)x1,(int)y1) ;
x0=x1;
y0=y1;
}
}
}
ここでi,jは整定数、aは実定数(circRaius)。0≦θ≦2π 。つまりrはθとともに変化する。
i,jをいくつか変えたサンプル出力を以下に示す。
http://a.jmpd.com/upload/show.php?pid=87-A&db=nakama&type=1
プログラムは 1≦i≦5、1≦j≦5すべてに完璧に対応できるようにしてください。また最後の文字列は以下のようにコーディングしました。
g.drawString("Leaves i= "+i+" j= "+j,110,275) ;
こんな感じです。お願いできますでしょうか?
0541デフォルトの名無しさん
NGNG>GUIかんけーはめんどクセーから、放置するぞ!
>GUIかんけーはめんどクセーから、放置するぞ!
0542デフォルトの名無しさん
NGNG簡単に作ってみました(役判定、Gui抜きですが・・・)
ここに書くには少しコードの量が多いのですがどうしましょうか?
あと私も初心者なので期待しないでください。
0544デフォルトの名無しさん
NGNGメアドがジャンピングニーw
0545デフォルトの名無しさん
NGNG俺は『ジャンピング クンニ』だと思った
どうりで、すごいプレーだなと思いましたよ
0547デフォルトの名無しさん
NGNGオブジェクト指向でオセロゲーム
ってもう既出?
0548デフォルトの名無しさん
NGNGprivate String mark=null;
private int num=0;
public Card(String mark,int num){
this.mark=mark;
this.num=num;
}
public String getMark(){
return mark;
}
public int getNum(){
return num;
}
}
0549デフォルトの名無しさん
NGNGfinal static int Num=52;
private static Card[] allCard=new Card[Num];
private String[] mark={"クラブ","ダイヤ","ハート","スペード"};
private Card[] myCard=null;
public Deck(){
for(int i=0;i<mark.length;i++){
for(int j=1;j<14;j++){
allCard[(j-1)+(13*i)]=new Card(mark[i],j);
}
}
}
public Card getCard(int num){
return allCard[num];
}
public static void shuffle(){
Card deckBackup=null;
for (int i=0; i<200; i++){
int myA = (int)Math.floor( Math.random() * 52 );
int myB = (int)Math.floor( Math.random() * 52 );
deckBackup = allCard[myA];
allCard[myA] = allCard[myB];
allCard[myB] = deckBackup;
}
0550デフォルトの名無しさん
NGNGpublic Card[] changeCard(int[] holdNum,int playCount){
Card[] chCard=new Card[5];
for(int i=0;i<chCard.length;i++){
chCard[i]=allCard[(playCount)*5+i];
}
for(int i=0;i<holdNum.length;i++){
chCard[holdNum[i]-1]=myCard[holdNum[i]-1];
}
sortCard(chCard);
myCard=chCard;
return myCard;
}
public Card[] takesCard(){
myCard=new Card[5];
Card deckBackup=null;
for(int i=0;i<myCard.length;i++){
myCard[i]=allCard[i];
}
sortCard(myCard);
return myCard;
}
0551デフォルトの名無しさん
NGNGCard deckBackup=null;
for (int i=0; i<4; i++){
for (int j=i+1; j<5; j++){
if (myCard[i].getNum() > myCard[j].getNum()){
deckBackup = myCard[i];
myCard[i] = myCard[j];
myCard[j] = deckBackup;
}
}
}
}
}
0552デフォルトの名無しさん
NGNGimport java.util.*;
public class CardTest {
public static void main(String[] args){
int playCount=1;
Deck deck=new Deck();
Deck.shuffle();
Card[] myCard=deck.takesCard();
for(int i=0;i<myCard.length;i++){
System.out.println((i+1)+":"+myCard[i].getMark()+myCard[i].getNum());
}
while(true){
String in=null;
System.out.print("ホールドしたい番号をすべて半角で空白をあけて入力してください(例・・・1 2 4)>");
try{
in=new BufferedReader(new InputStreamReader(System.in)).readLine();
StringTokenizer st=new StringTokenizer(in," ");
int[] holdNum=new int[st.countTokens()];
int count=0;
while(st.hasMoreTokens()){
holdNum[count]=Integer.parseInt(st.nextToken());
count++;
}
myCard=deck.changeCard(holdNum,playCount);
System.out.println("交換回数:"+(playCount)+"回目");
for(int i=0;i<myCard.length;i++){
System.out.println((i+1)+":"+myCard[i].getMark()+myCard[i].getNum());
}
0553デフォルトの名無しさん
NGNGSystem.out.print("まだ続けますか?(y or n)>");
in=new BufferedReader(new InputStreamReader(System.in)).readLine();
if(in.equals("y")){
break;
}
else if(in.equals("n")){
System.out.println("終了します");
System.exit(0);
}
else{
System.out.println("yかnで入力してください");
}
}
}
catch(NumberFormatException e){
System.out.println("半角整数で半角スペースで入力してください");
playCount--;
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("1〜5までの整数で入力してください");
playCount--;
}
catch(Exception e){
System.out.println("err");
}
playCount++;
}
}
}
0554デフォルトの名無しさん
NGNG機能はメール送らなくてスマソ
とりあえず役判定抜きで簡単に作ってみました。
実務経験なしの学生なんでソースの汚さは多めに見てください( ´∀`)
0555デフォルトの名無しさん
NGNGhttp://jcp.org/aboutJava/communityprocess/jsr/tiger/enum.html
の Card クラス使ってみるとか。
0556デフォルトの名無しさん
NGNGsuitじゃなくてmarkなあたりに君の英語力の無さが分かった
0557デフォルトの名無しさん
NGNG0558557
NGNG取り合えず丸投げするのでどなたか分かったらおながいします。
厨房でスマソ
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;
}
0559557
NGNG型として返す以下のメソッド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();
}
0560557
NGNGを下線部を埋めて追加せよ。また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デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNG�@
演習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デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNG増田じゃない
益岡です
0567全然わからないのですが
NGNGソース教えてください
0568デフォルトの名無しさん
NGNGpublic 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デフォルトの名無しさん
NGNGpublic 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デフォルトの名無しさん
NGNGimport 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最後
NGNGpublic 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つの引数に数字を入力");
}
}
}
0573デフォルトの名無しさん
NGNG3つ目の問題に20分もかけた自分が悪いです( ̄ー ̄)
なかなかいいアルゴリズムが思いつかなくて・・・
どなたか綺麗なソースコードをキボン
0574572
NGNG十分キレイだと思われ。エラー処理が多いだけ。
ちなみに漏れのは、
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;
}
}
}
0575573
NGNGおー、ありがとうございます。
すごい簡潔にまとまってますね。アルゴリズムもさっぱりしてるし。
てか、int型は小数点以下切捨てでしたね・・・
勉強になりました。出直してきます。それにしても
人の書いたコードっていろんな意味で参考になりますね
0576全然わからないのですが
NGNG0577デフォルトの名無しさん
NGNGSystem.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より小さければ終了(リスト不可能)。そうでなければ、int型の変数iをPから始めてPずつ増やしながら(i=i+P)画面に表示する。iがNを越えたら終了。
println( ) を使うと画面上で改行が入るので、数字を続けてリストするために print( ) を使うこと。
while文、for文のどちらを使ってもよい。
0579デフォルトの名無しさん
NGNGキー入力どうしたらいいんですか?
0581デフォルトの名無しさん
NGNGコマンドライン引数って何?
0582デフォルトの名無しさん
NGNGargvで取得できる奴だと思われ
0583デフォルトの名無しさん
NGNGおまえ、どこの学校でいったい何をならっているんだ?
授業なんか一回もでていないだろう。
もし、専門学校なら見込みないから学校やめれば?
大学なら単位あきらめろ。
死んでもプログラマにはなるなよ。
0584デフォルトの名無しさん
NGNGimport 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デフォルトの名無しさん
NGNG0586デフォルトの名無しさん
NGNGバカ丸出しの>>583の言うことなんか気にするな。
コマンドライン引数なんてプログラミングの本質では無い。
でも、コマンドライン引数を知らなくてもいいのは小学生までだよね〜。
0587山崎 渉
NGNG0588デフォルトの名無しさん
NGNGラム作ってみろ!!(笑、やれるなら)
0589デフォルトの名無しさん
NGNGはぁ、余裕なんですけど。
0590デフォルトの名無しさん
NGNG余裕ならやってみろよ。どうせ、余裕とか言って、588の策にのせられる
とか適当な事言ってやらないんだろ?俺は、やれないのにそんな事言
べきじゃないと思うね
0591デフォルトの名無しさん
NGNGそれならやってやる。
特に「リモートでクラス作る」をきちんと定義しろ。
0592デフォルトの名無しさん
NGNG0593名梨産
NGNG分散処理使っていいんだったら屁みたいに簡単にできるんだけど。。。
0594588
NGNG本当に乗ってくるヤシがいるとは・・・・、作って欲しいのは、
1、サーバ側でクラスファイルをバイナリデータにして、メソッドを通して
リモートに渡す
2、リモートでもらったバイナリデータをリフレクションとかクラスローダー
を使いつつ、利用可能な状態にする。
3、サーバ側がリモートで使えるようになったクラスをオブジェクトとして
普通に使えるようにする。
例えば〜、そうだな、渡すクラスの内容は適当でいいや、足し算とか、
平方根を求めるとかでも、
さァ、できるかなa〜?
0595デフォルトの名無しさん
NGNGローカル側がクライアントでリモート側がサーバとして
ローカルからリモートサーバにコードを送り込んで
リモートサーバ上でインスタンスを作成して、
ローカルからリモートのオブジェクトを呼び出すのが普通だと思うが。
0597デフォルトの名無しさん
NGNGちょっと、問題の質問です
1.SessionBeanつかうのは「RMIつかって」って言うのに反していますか?
2.クライアントには、取得するオブジェクトの情報はまるでないのですか?
0598588
NGNG俺はSessionbeanってのはよく知らないんだが、あんまし難しくされる
と分かんなくなっちゃうから、ピュアRMIでお願いしたい。
あと、クライアントには雛形ぐらいの情報は持たせておいてもいいが、
できればなんでも渡せるのが理想。
0599デフォルトの名無しさん
NGNGなんでも渡せるってことは
Object型でいいですね?
0601デフォルトの名無しさん
NGNGpackage 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デフォルトの名無しさん
NGNGpackage 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デフォルトの名無しさん
NGNGpackage 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デフォルトの名無しさん
NGNGpublic 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デフォルトの名無しさん
NGNG0607デフォルトの名無しさん
NGNGpackage 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デフォルトの名無しさん
NGNGpackage net2ch.client;
import java.io.Serializable;
public class Adder implements Serializable {
public int add(int a, int b) {
return a + b;
}
}
0609デフォルトの名無しさん
NGNGそこまで説明しないぞ。
あと今回のはリモートメソッドの呼び出しはやっていないから、
本当の意味では宿題の答えになってない。
リモートメソッド呼び出しまでやってほしいなら、
俺をその気にさせろ。
0611588
NGNG/ ヽ___/ ヽ
/ 井\ l___l /\
| 井 ● | | ● | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
へ | へ ヽ / | < >>608の続きまだ〜?
\\ \ \\ ヽ/ / \_____________
チン \\ .> \\ ヽ
チン \\/ \\ _ |
\ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ / ̄ ヽ / _
\回回回回回/ ̄ ̄ヽ / ̄ ̄ /|
\___/ ヽ____/ / |
/ |
/ |
0612デフォルトの名無しさん
NGNGなぜまずいかわかったか?
0613デフォルトの名無しさん
NGNG3つのファイルを入れ替えるぞ。
サーバ側はClassRepository.javaとRmiServer.javaだ。
クライアント側はRmiClient.javaだ。
0614デフォルトの名無しさん
NGNGpackage 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デフォルトの名無しさん
NGNGpackage 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デフォルトの名無しさん
NGNGpublic 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デフォルトの名無しさん
NGNGpublic 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デフォルトの名無しさん
NGNGpackage 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();
}
}
}
0620時代は個人主義
NGNGhttp://osaka.yomiuri.co.jp/new_feature/kokoro/jyuku06.htm
社会福祉法人「いのちの電話」の斎藤友紀雄事務局長は、「『いじめ』は
世界中で起きていますが、日本の場合、その一番大きな原因は、異質なも
のを認めないという精神文化に根ざしていると思います。偏差値教育や核
家族化によって孤独を強いられた子どもたちは、必死に自分の居場所を求
めるのですが、性格や能力が集団と調和しない子は、集団から排除されて
しまう。つまり、村意識が働いて、村八分にされてしまうのです」と語る。
<差別いじめをなくそう>
日本国憲法(国のあり方を定めた法)は、個人主義を定めています。
それは、戦前、全体主義だったわが国が、悲惨な戦争に突入し敗戦したと
いう苦い経験の反省に基づきます。
別にみなが一緒じゃなくてもいいでしょ?
みなが一緒じゃないと安心できない集団がいて、その集団が
異質分子を排斥しようとする。
0621時代は個人主義
NGNGA型は仲間を作ろうとする時、自分と価値観やリズムが同じ人ばかりを引
き寄せて、波長の合わない人々を避けてしまう傾向があります。そこには、A型
の、周囲に波風を起こしたくない、できるだけ安定した環境を作っておきたい、と
いう思いが働くからです。そんな風にしているうちに、気がついてみたらA型ば
かりの集団になっていた、ということはよくあります。
価値観がある程度同じ方向に向かっていることは大切なことですが、あまり同じ
ような考えの人ばかりが集まることは危険です。和気合いあいのムードにすっ
かり慣れて、「井の中の蛙」になってしまう恐れがあるからです。
A型は、周囲と協調して現状を安定させたい面と、常に向上心を持って現状を
脱皮したい面の両方を、バランスよく保っていくことで、上手に成長していくので
す。
自分と違う考えの人は、衝突も激しく起こるけれど、自分に良い刺激を与え、視
野を広げることにもなるということを考えてみて下さい。
また、人間関係にもけじめをつけようとするA型は、お客と店員など、立場で態
度を大きく変えたりすることがありますが、行き過ぎれば、やはり好ましくない行
動表現に見えます。
0622デフォルトの名無しさん
NGNGな自然数とし,乱数で生成するものとする.
ハッシュ関数を何種類か用いて,それらを比較せよ.
この問題を誰かといてください。
0623デフォルトの名無しさん
NGNG教官から、ハッシュ関数の例を与えられなかったのか?
■ このスレッドは過去ログ倉庫に格納されています