2016-12-03 4 views
0

具体的に言えば、ArrayListがString要素で構成されていて、その中の各文字をチェックしたいのですが、Stringsです。これは私が試したものですが、明らかにそれは動作しません:私はArrayListを作るStrings内の文字に2Dアレイ内の各文字を比較しようとしていたArrayListの要素がJavaの別の値と等しいかどうかを確認するにはどうすればよいですか?

public void fillBoard() 
    { 
     board = new char[ROW][COL]; 

     for (String s: words){ 

      for(int rows = 0; rows < board.length; rows++) 
      { 
       for(int cols = 0; cols < board[rows].length; cols++) 
       { 
        if(!s.equals(board[rows][cols])) 
        {       
         board[rows][cols] = randomChar(); 
        } 
       } 

      } 
     } 
    } 

ArrayListArrayList<String> words = new ArrayList<String>();であり、プロンプトが表示されたときにユーザーが単語を入力するため、ユーザーによって入力されます。それは

boardが2D char配列である{...、「こんにちは」、「さようなら」、「単語」}のように見えることができ、寸法は、それが、ランダム文字によって移入のユーザー入力

によって定義されますこの方法によって:

public char randomChar() 
    { 
     char alphabet[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 
       'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 
       'y', 'z'}; 

     return alphabet[(char)(alphabet.length * Math.random())]; 
    } 

} 

意図はchar board[][]アレイがランダムに配置された言葉をも含むことができ、ボードが更新されたとき、words ArrayListstringの一部ではない全ての文字が再びランダム化されることで、ユーザーが入力した単語と配列のどこに置かれた単語を保持していますか?毎ターン後に戦艦プログラムでボードを解読する。

+0

はchar型の配列にあなたの文字列を変換してから比較してみてくださいと方法によって、あなたは2次元配列のすべての文字を使用して、完全な文字列を比較している、そのをこのロジックでは動作しません。行と文字列を比較してください –

+1

文字配列を再初期化するので、決して動作しません。入力データに関するいくつかの情報を提供してください。私たちが手助けできるようにサンプルを提供してください。 – Default71721

+0

@ Default71721追加情報を追加しました – Bluasul

答えて

1

あなたが直接変更し、以下の手順を見てする必要があります文字で文字列を比較しです:

(1)char配列の各行を反復処理

(2)を取得しますstringlist

(3)次に、アレイの列にわたって反復とstring

内の各文字と比較

(4)各ステップで、長さが匹敵しているかどうかを確認するための検証を追加しました。もしそうでなければ、あなたの要件に従って実際に修正することができます。break

あなたは、インラインコメントを以下のコードを参照することができます。

public static void fillBoard() { 
     int x=2;//change row size accordingly 
     int y=2;//change row size accordingly 
     char[][] board = new char[x][y]; 
     //load the board char array 

     List<String> words = new ArrayList<>(); 
     //load the list 

     //Iterate each row of the char array 
     for(int rows = 0; rows < board.length; rows++) { 
      //Check if list size is correct to compare 
      if(rows >= words.size()) { 
       System.out.println("list size is lower than 
        the array size,can't caompare these rows"); 
       break; 
      } 
      //Get the string from list 
      String s = words.get(rows); 

      //Iterate across the columns and compare with string character 
      for(int cols = 0; cols < board[rows].length; cols++) { 
       //check if string length is comparable 
       if(s.length() != board[rows].length) { 
        System.out.println("list string length is lower 
         than the array string length,can't caompare "); 
        break; 
       } 
       if(s.charAt(cols) != board[rows][cols]) {       
        System.out.println(s.charAt(cols)+" is different !!!"); 
        board[rows][cols] = randomChar(); 
       } 
      } 
     } 
    } 
関連する問題