問題 1 次の設問 1,2 に答えよ 設問 1 1 から 10 まで数えながら その数が偶数か奇数かを表示する JAVA プログラムの一部である 空欄に入るべき文字列は何か for( int i=1; 1 ; i++){ System.out.print(i); if( 2 == 0){ System.out.println(" is Even"); else{ System.out.println(" is Odd"); 設問 2 100 回ループするような処理を行う JAVA プログラムの一部である 空欄に入るべき文字列は何か 3 ( int i=0; i< 4 ; i++ ) { System.out.println(i+1+" 回目 "); 設問 3 1 を 2 倍して表示し 1000 より大きくなったらループから抜ける JAVA プログラムの一部である 空欄に入るべき文字列は何か double x = 1.0; while( 5 ) { System.out.println( x ); x = x * 2 ; 問題 2 設問 1~5 のプログラムを実行した時の画面に表示される値を答えよ 設問 1 public class Problem1 { public static void main(string[] args){ int i=2; int j=3; System.out.println("i"+j); 設問 2 public class Problem2 { public static void main(string[] args){ int a=6; if((a>=2)&&(a<=5)){ System.out.print("A"); else if(a!=4){ System.out.print("B"); if(a==6){ System.out.print("C"); 1
設問 3 public class Problem3 { public static void main(string[] args){ for(int i=1; i<3; i++){ System.out.print(i-1); 設問 4 import java.io.*; public class Problem4 { public static void main(string args[]) throws Exception { int s = 0; for(int i=0; i<4; i++){ for(int j=0; j<7; j++){ s = s + 1; System.out.println("s="+s); 設問 5 import java.io.*; public class Problem5 { public static void main(string args[]) throws Exception { int i = 1; int s = 0; while(i<1){ s = s + 1; i = i * 2; System.out.println("s="+s); 問題 3 次に設問 1~3 の 1 ~ 15 を解答群から選んで, プログラムを完成させよ 設問 1 2 人のユーザが1つの口座を共有し, 各ユーザは共有している口座に対して 100 円を 3 回ずつ預金するプログラムである class Bank { private int balance = 0; public synchronized void furikomi(string s, int a) { int tmp = balance; System.out.println(s + " さんから " + a + " 円の振込みがありました."); 1 System.out.println(" 現在の残高は " + balance + " 円です."); public int getbalance() { 2 2
class Person extends Thread { 3 private String name; public Person(Bank b, String s) { 4 name = s; // 預金処理 ( スレッド実行 ) 5 for(int i=0; i < 3; i++) { 6 // 同期テスト用 sleep try{ 7 catch(interruptedexception e){ public class BankTest { public static void main(string[] args) { String a = "Kazuo"; String b = "Hanako"; 8 Person prsn1 = new Person(bnk, a); 9 Person prsn2 = new Person(bnk, b); 10 try { prsn1.join(); prsn2.join(); catch(interruptedexception e) { e.printstacktrace(); System.out.println(" 現在の残高は " + bnk.getbalance() + " 円です."); 設問 2 ボタンが押されたときに ボタンに表示されている start が [stop] に変わるプログラムである import java.applet.applet; import java.awt.button; import java.awt.event.actionlistener; import java.awt.event.actionevent; public class AppletProg01 extends Applet implements 11 { 3
Button bt; public void init(){ bt = new Button("start"); add(bt); bt. 12 (this); public void 13 (ActionEvent ae){ bt.setlabel("stop"); 設問 3 "It is " + num ( ここで num=1~9) を出力するプログラムである import java.applet.applet; public class AppletProg02 extends 14 implements Runnable{ int num; public void init(){ Thread th; th = new Thread(this); th.start(); public void run(){ try{ for(int i = 0; i < 10; i++){ num = i; repaint(); Thread.sleep(1000); catch(interruptedexception e){ e.printstacktrace(); public void 15 { String str = "It is " + num; g.drawstring(str, 10, 10); 4
問題 3 解答群 ア ActionListener イ actionperformed ウ addactionlistener エ Applet オ balance = tmp + a; カ Bank bnk = new Bank(); キ bnk = b; ク bnk.furikomi(name, 100); ケ paint(graphics g) コ private Bank bnk; サ prsn1.start(); シ prsn2.start(); ス public void run() { セ return balance; ソ sleep(2000); 問題 4 表示のボタンを押すと 1 回実行 2 回実行 と表示され クリアボタンを押すと表示が消えるプログラムである 1 ~ 5 に入る適切なコードを解答群の中から選んでプログラムを完成させよ import java.awt.*; import java.awt.event.*; import java.lang.*; import javax.swing.*; class Figure extends JFrame implements ActionListener{ JFrame frame; JPanel panel; JScrollPane scroll; JTextArea tarea; JButton botn1; JButton botn2; int pos = 0; public Figure(String title) { frame = new JFrame(); panel = new JPanel(new FlowLayout(FlowLayout.CENTER)); 1 scroll = new JScrollPane(tarea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, 5
2011/01/13 OOP 同演習小テスト問題 JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); botn1 = new JButton(" 表示 "); botn2 = new JButton(" クリア "); panel.add(botn1); panel.add(botn2); // JFrame のコンテントペインの取得 Container con = frame.getcontentpane(); // コンテントペインに JPanel, JScrollPane を配置 2 con.add(panel, BorderLayout.SOUTH); con.add(scroll, BorderLayout.CENTER); botn1.addactionlistener(this); botn2.addactionlistener(this); // フレームのセットアップ frame.setbackground(color.white); frame.setsize(320, 240); frame.settitle(title); frame.setdefaultcloseoperation(jframe.exit_on_close); 3 public void actionperformed(actionevent e) { if (botn1 == e.getsource()) { pos++; 4 tarea.append(str); tarea.setcaretposition(tarea.gettext().length()); else if (botn2 == e.getsource()){ tarea.settext(""); pos = 0; public class FigureTest { static public void main(string args[]) { Toolkit.getDefaultToolkit().setDynamicLayout(true); 5 解答群 ( ア )con.setcolor(new Color()); ( イ )con.setlayout(new BorderLayout()); ( ウ )con.setframe(new BorderLayout()); ( エ )String str = pos; ( オ )String str = pos+" 回実行 \n"; ( カ )tarea = new JText(); ( キ )tarea = new JTextArea(); ( ク )Figure figure = new Figure(); ( ケ )Figure figure = new Figure(" ボタン処理 "); ( コ )Figure.setVisible(true); ( サ )frame.setvisible(true); 6
問題 5 次に設問 1~5 の空欄 2011/01/13 OOP 同演習小テスト問題に解答群から適切なものを選べ 設問 1 友達の情報を設定して出力するプログラムである ここで, このプログラムは, 次の 2 つのクラスで構成される (1) 友達の情報を格納する Friend クラス (2)main メソッドを持ち,Friend クラスを使用して処理を行うクラス 次の実行結果になるようにプログラム群 a~h を用いて (2) のプログラムの完成させる場合, プログラムの構成順 序として正しい答えは 1 である 実行結果 taro:20 jiro:16 (1) のプログララム class Friend{ String name; int age; プログラム群 import java.io.*; a public class Prog5_1 { public static void main(string args[]){ f1.age = 20; b System.out.println(f1.name+":"+f1.age); c Friend f1 = new Friend(); d e f g h f1.name = "taro"; f2.name = "jiro"; f2.age = 16; Friend f2 = new Friend(); System.out.println(f2.name+":"+f2.age); 設問 1 解答群 ア a c b g d e h f イウエオ a c d b e g h f a c d b g e h f a g d b c e h f a g b d c e h f 設問 2 配列に格納されているデータの最大値 最小値を求めるプログラムである ここで, このプログラムは, 次の 2 つのクラスで構成される (1) 最大値 最小値を処理する MaxMin クラス getmax メソッド : 最大値を取得する getmin メソッド : 最小値を取得する (2)main メソッドを持ち,MaxMin クラスを使用して処理を行うクラス 7
次の実行例の結果になるようにプログラム群 a~i を用いて (1) プログラムの完成させる場合, プログラムの構成順序として正しい答えは 2 である 実行例 最大値 = 12 最小値 = -9 (2) のプログララム public class Prog5_2 { public static void main(string[] args){ int[] num={6,3,1,-9,2,8,-2,4,12,-4,7; System.out.println(" 最大値 = " + MaxMin.getMax(num)); System.out.println(" 最小値 = " + MaxMin.getMin(num)); プログラム群 for(int i=1;i<val.length;i++){ a if(max < val[i]) public static int getmin(int[] val){ b int min = val[0]; // 先頭の要素を設定 return min; c class MaxMin { d public static int getmax(int[] val){ int max = val[0]; // 先頭の要素を設定 for(int i=1;i<val.length;i++){ e if(min > val[i]) return max; f max = val[i]; g min = val[i]; h i 設問 2 解答群 アイウエ d a h f b e g c i d a g c b e h f i d a g f b e h c i d g a f b h e c i 8
設問 3 下記の実行結果となるようなプログラムを作成したい に入る適切なコードを解答群の中から選んでプログラムを完成させよ ( 実行により Hi! Hello の表示位置はかわることは有り得るがその点は考慮しなくて良い ) // スレッドクラス class MyThread extends Thread{ //run メソッド 1 System.out.println("Tread Start!"); // 5 回 500 ミリ秒毎に "Hello" と表示する for(int i = 0 ; i < 5 ; i++ ){ System.out.println("Hello"); try{ Thread.sleep(500); catch(exception e){ System.out.println("Tread End!"); // テストメイン public class Test{ public static void main(string args[]){ 2 3 4 実行結果 C:\ Java >java Test Hi! Tread Start! Hello Hello Hi! Hello Hello Hi! Hello Tread End! Hi! Hi! 設問 3 解答群 ア public void run(){ // スレッドを開始イ t.start(); // スレッドクラスのインスタンスを作成ウ MyThread t = new MyThread(); // 1 秒毎に "Hi!" と 5 回表示する for(int i = 0 ; i < 5 ; i++ ){ System.out.println("Hi!"); エ try{ Thread.sleep(1000); catch(exception e){ 9
設問 4 Frame メニューバーを生成し メニュー バーにメニューを1つ加えるプログラムである 次の実行結果になるようにプログラム群 a~g を 用いてプログラムの完成させる場合, プログラム の構成順序として正しい答えは 4 で ある プログラム群 menubar.add(menu); // メニューバーにメニュー項目タイトル名を追加 a setjmenubar(menubar); // フレームにメニューバーを追加 settitle(title); // フレームのタイトルをセット b private JMenuBar menubar; private JMenu menu; MyJFrame01(String title){ c import java.awt.*; import javax.swing.*; class MyJFrame01 extends JFrame { public static void main(string[] args){ d MyJFrame01 frame = new MyJFrame01(" メニュー作成 _01"); // フレームのインスタンス生成 e public class MenuProg01 { setsize(400,400); // フレームの大きさを設定 f setdefaultcloseoperation(jframe.exit_on_close); // 閉じるボタンの動作を設定 setvisible(true); // フレームを表示 g menubar = new JMenuBar(); // メニューバーの生成 menu = new JMenu(" メニュー "); // メニュー項目タイトルの生成 設問 4 解答群 アイウエ c b a g e f d c b a f g e d c b g f e a d c b g a f e d 10
設問 5 Frame メニューバーを生成し メニューバーにメニュー メニューにメニューアイテムを1つ加 えるプログラムである 次の実行結果になるようにプログラム群 a~i を用いてプログラムの完成させる場 合, プログラムの構成順序として正しい答えは 5 である ここで メニューは次の順番で作成 する メニュー生成の順番 1 フレームタイトル設定 2 フレームの大きさ設定 3 フレームを閉じるボタン動作設定 4 メニューバー生成 5 メニュー生成 6 メニュー配置 7 メニューアイテム生成 8 メニューアイテム配置 9 メニューバー設定 10 パネル生成 11 ボタン生成 12 ボタン配置 13 コンテントペイン取得 14 パネル配置 プログラム群 import java.awt.*; import javax.swing.*; a public class MenuProg02 extends JFrame{ public static void main(string args[]){ setjmenubar(menubar); b JPanel panel = new JPanel(); JMenu menu1 = new JMenu("File"); JMenu menu2 = new JMenu("Edit"); c menubar.add(menu1); menubar.add(menu2); MenuProg02 frame = new MenuProg02(" タイトル "); frame.setvisible(true); // フレーム表示 d MenuProg02(String title){ // メニュー作成 JButton button = new JButton("button"); panel.add(button); e Container contentpane = getcontentpane(); contentpane.add(panel, BorderLayout.CENTER); menu1.add(menuitem1); f menu1.add(menuitem2); menu1.add(menuitem3); JMenuItem menuitem1 = new JMenuItem("New"); g JMenuItem menuitem2 = new JMenuItem("Open"); JMenuItem menuitem3 = new JMenuItem("Close"); settitle(title); setbounds(100, 100, 300, 250); h setdefaultcloseoperation(jframe.exit_on_close); JMenuBar menubar = new JMenuBar(); i 11
設問 5 解答群 アイウエオ a d b e h c g f i a d h b e c g f i a d h c g f b e i a d h c f g b e i a d h g f c b e i 12
解答欄 学生番号 氏名 問題 1( プログラムを記入 ) 1 2 3 4 5 問題 2( 実行結果を記入 ) 1 2 3 4 5 問題 3( 記号ア~ソを記入 ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 問題 4( 記号ア~サを記入 ) 1 2 3 4 5 問題 5( 記号ア~オを記入 ) 1 2 3 1: 2: 3: 4: 4 5 13