下記のjavaの問題で悩んでいます。
ご教授ください。
[問題]
図2 は,アルファベットの小文字を2 個入力して,1 個目と2 個目の間にあるすべての小文字(1 個
目がb で2 個目がd ならば,b とc とd.1 個目がe で2 個目がb ならば,b とc とd とe.)を自由に
組み合わせて構成される長さが3 の文字列のすべてを表示するJava のプログラムである.以下に,本
プログラムの動作例を示す.
<動作例>(下線部は入力)
アルファベットの小文字を1 文字入力してください
g
アルファベットの小文字をもう1 文字入力してください
e
eee
eef
eeg
efe
eff
efg
ege
egf
egg
fee
fef
feg
ffe
fff
ffg
fge
fgf
fgg
gee
gef
geg
gfe
gff
gfg
gge
ggf
ggg
このとき,本プログラムのsetNode( )メソッドの中身を記述してプログラムを完成させよ.ただし,
setNode( )メソッドは,再帰的手続きとし,プログラムの他の部分を変更(追加,削除を含めて)しな
いこと.
Java
1import java.util.Scanner; 2 3class Node{ 4 private int value; 5 private Node child[]; 6 7 public void setNode(int value, int digit, int start, int end) { 8 //ここのメソッドの穴埋め問題 9 } 10 11 public int getValue() { 12 return value; 13 } 14 15 public Node getChild(int index) { 16 return child[index]; 17 } 18} 19 20public class AlphaString { 21 private static int index1; 22 private static int index2; 23 24 public static void main(String[] args) { 25 Scanner abc = new Scanner(System.in); 26 27 System.out.println("アルファベットの小文字を1文字入力してください。"); 28 String str1 = abc.next(); 29 char c1 = str1.charAt(0); 30 31 System.out.println("アルファベットの小文字をもう1文字入力してください。"); 32 String str2 = abc.next(); 33 char c2 = str2.charAt(0); 34 35 //アルファベットをabc順に並べ替え 36 index1 = c1 - 'a'; 37 index2 = c2 - 'a'; 38 if(index1 > index2) { 39 int t = index1; 40 index1 = index2; 41 index2 = t; 42 } 43 44 Node root = new Node(); 45 root.setNode(0, 3,index1, index2); 46 47 for(int i = index1; i <= index2; i++) { 48 printCharacter(root.getChild(i), 3, ""); 49 } 50 } 51 52 private static void printCharacter(Node n, int digit, String str) { 53 String alpha = "abcdefghijklmnopqrstuvwxyz"; 54 char c = alpha.charAt(n.getValue() - 1); 55 56 if(digit == 1) { 57 System.out.println(str + c); 58 return; 59 } 60 61 for(int i = index1; i <= index2; i++) { 62 printCharacter(n.getChild(i), digit - 1, str + c); 63 } 64 } 65} 66
あなたの回答
tips
プレビュー