2016-11-17 9 views
-3

私は、ユーザが入力した単語とパラメータに基づいて単語検索を作成するプログラムに取り組んできました。基本的な考え方は、これに似たものを作成することです:ランダムな単語を文字配列に実装する際の問題

は、列の数が

単語を入力してください行の数を入力します

プログラムは、8行、7列のワード検索を生成するであろう、との言葉の猫や犬を含むであろう。プログラムは、与えられた制約内で、これらの単語を斜めに、水平に、そして垂直に生成します。

私は答えが欲しい、またはこれが私のために行われるのではなく、むしろ正しい方向を指すことに興味があります。

以下に、私が皆にアイデアを与えなければならない最新のコードを添付します。

また、私が求めているのは、正しい方向への出発点です。

ありがとうございました!

public void fillArray() {Scanner sc = new Scanner(System.in); 

    System.out.println("How many rows would you like? >"); 
    int row = sc.nextInt(); 

    System.out.println("How many columns would you like? >"); 
    int col = sc.nextInt(); 

    String word = sc.next(); 
    String testString = word; 
    char[] stringToCharArray = testString.toCharArray(); 

    System.out.println(testString.toCharArray()); 

    int[][] arrayRC = new int[row][col]; 

    for (int i = 0; i < row + 1; i++) { 
     for (int j = 0; j < col + 1; j++) { 
      if (j < col && i < row) { 
       arrayRC[i][j] = (int) ((Math.random() * 26) + 1); 

       char alphabet; 
       switch (arrayRC[i][j]) { 
        case 1: 
         alphabet = 'a'; 
         break; 
        case 2: 
         alphabet = 'b'; 
         break; 
        case 3: 
         alphabet = 'c'; 
         break; 
        case 4: 
         alphabet = 'd'; 
         break; 
        case 5: 
         alphabet = 'e'; 
         break; 
        case 6: 
         alphabet = 'f'; 
         break; 
        case 7: 
         alphabet = 'g'; 
         break; 
        case 8: 
         alphabet = 'h'; 
         break; 
        case 9: 
         alphabet = 'i'; 
         break; 
        case 10: 
         alphabet = 'j'; 
         break; 
        case 11: 
         alphabet = 'k'; 
         break; 
        case 12: 
         alphabet = 'l'; 
         break; 
        case 13: 
         alphabet = 'm'; 
         break; 
        case 14: 
         alphabet = 'n'; 
         break; 
        case 15: 
         alphabet = 'o'; 
         break; 
        case 16: 
         alphabet = 'p'; 
         break; 
        case 17: 
         alphabet = 'q'; 
         break; 
        case 18: 
         alphabet = 'r'; 
         break; 
        case 19: 
         alphabet = 's'; 
         break; 
        case 20: 
         alphabet = 't'; 
         break; 
        case 21: 
         alphabet = 'u'; 
         break; 
        case 22: 
         alphabet = 'v'; 
         break; 
        case 23: 
         alphabet = 'w'; 
         break; 
        case 24: 
         alphabet = 'x'; 
         break; 
        case 25: 
         alphabet = 'y'; 
         break; 
        case 26: 
         alphabet = 'z'; 
         break; 
        default: 
         alphabet = '-'; 
         break; 
       } 
       System.out.print(alphabet); 

      } else { 
       System.out.println(); 
      } 
     } 
    } 
} 
+1

[OK]のようなものをお勧めします、あなたはどんな質問があるのですか? – emotionlessbananas

+0

@FlyingZombie \t 私が作成した2次元配列全体にランダムにスキャナに入力する単語をどのように実装するのか尋ねると思います。 – AnimalMother

+0

アルファベットグリッドまたは単語グリッドから検索していますか? – emotionlessbananas

答えて

0

私は(あなたが推測できるように、私はそれを試していない)、以下が動作すると信じています。

charの2D配列を使用しますが、intではありません。各フィールドの初期値は '\ 0'になります。これを使用します。私は最初に単語に、後でランダムに文字を埋めるでしょう。単語を入力するには、まずランダムな方向または向き(縦、横または斜め)を選択します。あなたが知っている限り、3,5、または8の方向を望むかどうかはわかりません...単語はどこに単語を始めることができるかにいくつかの制限を設けます。例えば、長さ3の水平単語は最下行で始めることができます右端から少なくとも3つの位置;縦の単語は下から始めることはできません。可能な範囲内からランダムな開始四角形を選択します。既に記入された文字と競合があるかどうかを確認してください。覚えておいてください:「c」または「\ 0」がすでに含まれている場合は、フィールドに「c」を記入してください。単語の文字が矛盾する場合にのみ、すべての文字を記入してください。競合が発生した場合は、別のスタートスクエアを試してください。 100回の試行後にも単語を入力できない場合は、あきらめてすべての単語を入力できないことをユーザーに伝えます。

すべての単語を入力した後、文字が入力されていないすべてのフィールドにランダムな文字を入力します。

ランダムな文字を最後に入力すると、誤ってもう1つの場所に猫が綴り込まれてしまい、2度そこに入ることがあるという問題があります。あなたがそれで生きることができるかどうかを決めてください。

EDIT:むしろあなたよりも、ランダムで長いswitch文を文字を選択するには、私は

private static final char[] LETTERS = "abcdefghijklmnopqrstuvwxyz".toCharArray(); 
private static final Random RAND = new Random(); 

private static char getRandomLetter() { 
    int randomIndex = RAND.nextInt(LETTERS.length); 
    return LETTERS[randomIndex]; 
} 
+0

よく考えた答えをありがとう。私はこれを朝にしよう! – AnimalMother

関連する問題