2016-04-06 17 views
-2

私は総和パズルをやろうとしています。質問は総ての可能な構成を列挙しテストすることによって総和パズルを使用するよう求められます。与えられた例は誰かが私にこれらのエラーをクリアする手助けをすることができます

鍋+鍋=よだれかけ

犬+猫=豚

男の子+女の子=赤ちゃん私は代入の左辺は変数でなければならないというエラーを取得しておく

ました

charSet.charAt(setIndex ++)= stringTwo.charAt(ループ);

intからboolに変換できません。

(= 0が存在する)場合、私はそれが実行されない出力を表示しようとする私のコードでも

import java.util.Scanner; 
public class Recursion 
{ 
    // Example program 


    public static String stringOne = new String(new char[10]); 
    public static String stringTwo = new String(new char[10]); 
    public static String stringThree = new String(new char[11]); 
    public static String charSet = new String(new char[11]); 
    public static int numberOne; 
    public static int numberTwo; 
    public static int numberThree; 

    public static int maxCharCount; 

    public static int[] numberSet = new int[10]; 

    public static void checkForEquality() 
    { 

    numberOne = numberTwo = numberThree = 0; 
    int loop; 
    int subloop; 


     for (loop = 0; loop < stringOne.length(); loop++) 

     { 
      for (subloop = 0; subloop < maxCharCount; subloop++) 

      { 
      if (stringOne.charAt(loop) == charSet.charAt(subloop)) 

      { 
      if (loop == 0 && numberSet[subloop] == 0) 

     return; 

     //generate the number 

     numberOne = (numberOne * 10) + numberSet[subloop]; 
      } 
      } 

     } 
     for (loop = 0; loop < stringOne.length(); loop++) 

     { 
      for (subloop = 0; subloop < stringTwo.length(); subloop++) 

      { 
      if (stringTwo.charAt(loop) == charSet.charAt(subloop)) 

      { 
      if (loop == 0 && numberSet[subloop] == 0) 

     return; 

     //generate the numeber 

     numberTwo = (numberTwo * 10) + numberSet[subloop]; 
      } 
      } 
     } 


     for (loop = 0; loop < stringThree.length(); loop++) 

     { 
      for (subloop = 0; subloop < maxCharCount; subloop++) 

      { 
      if (stringThree.charAt(loop) == charSet.charAt(subloop)) 

      { 
       if (loop == 0 && numberSet[subloop] == 0) 

     return; 

     //generate the number 

     numberThree = (numberThree * 10) + numberSet[subloop]; 
      } 
      } 
     } 

     if (numberOne + numberTwo == numberThree) 
     { 
     //display the output 

     System.out.print(" Summation Puzzle solved. "); 

     System.out.print("\n"); 
     System.out.print(stringOne); 
     System.out.print("<==>"); 
     System.out.print(numberOne); 
     System.out.print("\n"); 
     System.out.print(stringTwo); 
     System.out.print("<==>"); 
     System.out.print(numberTwo); 
     System.out.print("\n"); 
     System.out.print(stringThree); 
     System.out.print("<==>"); 
     System.out.print(numberThree); 
     System.out.print("\n"); 

    //loop to show the result 

    for (loop = 0; loop < maxCharCount; loop++) 
    { 
     System.out.print(charSet.charAt(loop)); 
     System.out.print("<==>"); 
     System.out.print(numberSet[loop]); 
     System.out.print("\n"); 
    } 

    System.exit(0); 

     } 
    } 


     public static void generateCombinations(int indexCounter, int[] availableSet) 

     { 
      int loop; 
      if (indexCounter != 0) 
      { 

     for (loop = 0; loop < 10; loop++) 
     { 

     numberSet[indexCounter] = loop; 

     if (availableSet[loop] == 1) 
     { 

     availableSet[loop] = 0; 

     generateCombinations(indexCounter + 1, availableSet); 

     availableSet[loop] = 1; 
     } 
     } 
      } 

     if (indexCounter == maxCharCount) 

     { 
    checkForEquality(); 
     } 

     } 

     public static void createCharSet() 
     { 

     int loop; 
     int setIndex; 
     int exists; 
     int subloop; 

     setIndex = 0; 

     for (loop = 0; loop < stringOne.length(); loop++) 
     { 
      exists = 0; 

     for (subloop = 0; subloop < setIndex; subloop++) 

     { 

     if (stringOne.charAt(loop) == charSet.charAt(subloop)) 
     { 
     exists = 1; 
     } 

     } 
     if (exists == 0) 

     { 
      charSet = StringFunctions.changeCharacter(charSet, setIndex++, stringOne.charAt(loop)); 
     } 
     } 

      for (loop = 0; loop < stringTwo.length(); loop++) 
      { 
     exists = 0; 

     for (subloop = 0; subloop < setIndex; subloop++) 

     { 

     if (stringTwo.charAt(loop) == charSet.charAt(subloop)) 

     { 
     exists = 1; 
     } 

     } 

     if (exists == 0) 
     { 

      charSet = StringFunctions.changeCharacter(charSet, setIndex++, stringTwo.charAt(loop)); 

     } 
      } 

     for (loop = 0; loop < stringThree.length(); loop++) 

     { 
      exists = 0; 

     for (subloop = 0; subloop < setIndex; subloop++) 

     { 

      if (stringThree.charAt(loop) == charSet.charAt(subloop)) 
      { 
     exists = 1; 
      } 
     } 

      if (exists == 0) 
      { 


      charSet = StringFunctions.changeCharacter(charSet, setIndex++, stringThree.charAt(loop)); 
      } 
     } 

      maxCharCount = setIndex; 
     } 

      public static void calculateSummation() 

      { 
      int loop; 

     if (maxCharCount > 10) 

     { 

     System.out.print("Please check the input again"); 

     return; 
     } 
      else 

      { 

      int[] avaliableSet = new int[10]; 

     for (loop = 0; loop < 10; loop++) 
     { 

      avaliableSet[loop] = 1; 
     } 

      generateCombinations(0, avaliableSet); 
      } 
      } 

    public static void main(String[]args) 
      { 
       Scanner scan = new Scanner(System.in); 

      System.out.print(" Enter the first String :"); 
      stringOne = scan.next(); 


      System.out.print(" Enter the second String :"); 
      stringTwo = scan.next(); 

      System.out.print(" Enter the thirsd String :"); 
      stringThree = scan.next(); 

     createCharSet(); 



     System.out.print(" The character set formed from the given string = "); 
     System.out.print(charSet); 

     calculateSummation(); 
     checkForEquality(); 
      } 
} 
+3

投稿に誤りがあるとは思わない –

+2

ステップ1:エラーメッセージを読んでください。 – SLaks

+1

手順2:コードを正しくインデントします。 – robotlos

答えて

1

多くの問題は、作成したコードの構文エラーに起因しています。例えば:

  1. line 74: if (stringThree.charAt(loop) == charSet.charAt(subloop) != null)

    • charSet.charAt(subloop) != nullnullに比較した場合!=オペレータはブール値のために使用することができないため、無効な比較です。文字が.charAt(var)から返ってくるかどうかを判断しようとしている場合は、括弧を使用してそれぞれのobject.charAt(var)をnullと独立に比較します。
  2. line 183: charSet = tangible.StringFunctions.changeCharacter(charSet, setIndex++, stringOne.charAt(loop));

    • tangible変数がローカルに存在しないか、グローバルに定義されていないように、皮肉に有形ではありません。
  3. charSet.charAt(setIndex++) = stringTwo.charAt(loop);

    • charSet.charAt(setIndex++)文字を返すメソッドです。これは、変数のように指定されたインデックスに文字を設定できるわけではありません。
  4. line 227: if (exists = 0)

    • 条件での比較を行うときは、==を使用する必要があります。
  5. line 269: Scanner scan = new Scanner(System.in);

    • Scannerクラスがインポートされなかったので、使用することができません。

      line 283: charSet.charAt(maxCharCount) = '\0';

    • ここでも、あなたはそれが変数のようにそのインデックスで文字を設定するために .charAt(var)を使用することはできません。

これらの問題のすべては、このようなEclipseとして、適切なIDEを使用することにより、自己決定することができます。

編集:あなたのアルゴリズムを表すコードを書く前に、鉛筆と紙で少し時間をかけてプログラムのロジックを試してみてください。このようにして、より包括的で、コメントのついた、よりクリーンなコードを書くことができます。 Hereは、既存のプロジェクトを凝縮させるのに役立つガイドです。

+1

または[IntelliJ IDEA](https://www.jetbrains.com/idea/)は、とても良い無料のCommunity Editionを提供しています。 – dnault

+0

@dnault「なぜあなたはEclipseを使っていないのですか?それは良いIDEだ」 – Zulfe

+0

誰かがこのコードを実行して、私のディスプレイ出力がうまくいかない理由を教えてもらえますか? –

関連する問題