2017-03-11 9 views
1

私はstackoverflowに関する多くの助力を受けてくれてとても感謝しています。私はこのリストループを正しくコーディングしているようだ。私はこのプロジェクトをもっと簡単にコード化する方法があることを知っていますが、私の学生プロジェクトでは変数をURLに渡す必要があります。私は単純にURLを通しているパスワードを組み合わせて、6つの値(cold,fusion,dynamic and bert, ernie, oscar)で利用できるすべてのパスワードコンボを作成しようとしています。私は問題を私のリストループに隔離しました。あなたは私がここで何が欠けているか話すことができますか?前もって感謝します。CFでループリストを使用して組み合わせを作成する

エラーメッセージ:

エラーがcoldfusion.compiler.ASTstructureReferenceは、互換性のない型に java.lang.Stringでにキャストできないタイプ のオブジェクトをキャスト。

これは、通常、 Javaでのプログラミングエラーを示していますが、 には異種オブジェクトを使用する方法とは異なる方法で試してみることもできます。

passwords.cfm:

<cfinclude template="header.cfm"> 
<body> 

<h2>Loop List</h2> 

<a href="looplist.cfm?List1=cold,fusion,dynamic&List2=bert,ernie,oscar"> 
Click here for all password combinations</a> 

<cfinclude template="footer.cfm"> 

looplist.cfm:空のパスワードのリストを

<cfinclude template="header.cfm"> 

<h2>Loop List</h2> 

<cfloop Index = "#URL.List1#" List = "#URL.List2#"> 
    <cfloop Index = "#URL.List2#" List = "#URL.List1#"> 
    </cfloop> 
</cfloop> 

<cfset passwordList= #URL.List1# & #URL.List2#> 

<UL><cfoutput>#passwordList#</cfoutput><UL><BR> 

<cfinclude template="footer.cfm"> 
+1

あなた「再利用」ループas'index'ofあなたのURL変数と変数を上書きし... –

+0

はあなたが「何を意味するかについて詳しく説明することはできます問題"?コードがエラーを投げていますか?はいの場合は、質問を編集して実際のエラーメッセージを含めてください。 – Leigh

+0

これは基本的に私のインデックス値の名前を変更する必要がありますか? – Veronica

答えて

0

スタート。

次に、結合された単語の左側を取る外側ループ(インデックスi)があります。

内側のループ(インデックスj)から、結合された単語の右側に移動します。また、ここでは(内部ループ)、2つ目の組み合わせ(右側と左側の単語を切り替えて)を作成し、2つの組み合わせを 'パスワードリスト'に追加します。

<cfset passwordList = "" /> 

    <cfloop index="i" list="#URL.List1#"> 

    <cfset tempPasswordCombo1 = "" /> 
    <cfset tempPasswordCombo2 = "" /> 

    <cfloop index="j" list="#URL.List2#"> 
     <cfset tempPasswordCombo1 = i & j /> 
     <cfset tempPasswordCombo2 = j & i />  
     <cfset passwordList = listAppend(passwordList, tempPasswordCombo1) /> 
     <cfset passwordList = listAppend(passwordList, tempPasswordCombo2) /> 
    </cfloop> 

    </cfloop> 


    <cfoutput>#passwordList#</cfoutput> 
2

<cfloop Index = "#URL.List1#" ...>

"インデックス" は、 "MYVARIABLE" として変数のを含む単純な文字列でなければなりません。ポンド記号、およそURL.List1は、変数の評価を強制します。実際にはという値が名前として渡されています。つまり、"cold,fusion,dynamic"です。それはvalid variable nameではないので、あなたが見ている暗号のコンパイルエラーを引き起こしています。

これは宿題なので、私はあなたのためのコードを書くつもりではなく、あなたが構築できる例を提供します。私が示唆したようにthe comments of your other thread

  • 簡単に始める。簡単にするために、URLパラメータを一時的にハードコードすることができます。多くの場合、cfdumpcfoutputを使用して、コードが何をしているかをよりよく理解するために、異なるポイントに変数を表示します。

  • ループ "index"とurl変数の両方にList1を使用しないでください。 2つの異なる変数名を使用します。

スターター例:

<!--- Hard code values for testing ONLY ---> 
<cfset URL.List1 = "cold,fusion,dynamic"> 
<cfset URL.List2 = "bert,ernie,oscar"> 

<cfloop List="#URL.List2#" index="OuterValue"> 
    <!--- Display current element in outer loop for debugging only ---> 
    <cfoutput> 
     <h3>OUTER LOOP: Current element from URL.List2 is: #OuterValue#</h3> 
    </cfoutput> 

    <cfloop List = "#URL.List1#" index="InnerValue"> 
     <!--- Display current element in inner loop for debugging only ---> 
     <cfoutput> 
      INNER LOOP: Current value from URL.List1 is: #InnerValue#<br> 
     </cfoutput> 

     <!--- 
      ... real code that does something with the two variables here .... 
     ---> 
    </cfloop> 
</cfloop> 
関連する問題