2016-04-06 6 views
-2

Я пытаюсь сделать головоломку суммирования, вопросы задают использовать головоломки суммирования, перечисляя и тестируя все возможные конфигурации, а затем говорят, что используют его для решения приведенных примеров. Приведенные примеры былиможет кто-то помочь мне очистить эти ошибки

горшок + поддон = нагрудник

собака + кошка = свинья

мальчик + девочка = ребенок

Я получаю сообщение об ошибке сказав левая сторона присваивания должен быть переменной

charSet.charAt (setIndex ++) = stringTwo.charAt (loop);

не может конвертировать из 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) != null является недопустимым сравнением, поскольку оператор != не может быть использован для булевых при сравнении с null. Если вы пытаетесь определить, возвращаются ли символы от .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 класса не был импортирован и, следовательно, не может быть использован.
  6. line 283: charSet.charAt(maxCharCount) = '\0';

    • Опять же, вы не можете использовать .charAt(var), чтобы установить характер по этому индексу, как это переменная.

Все эти проблемы могут быть самоопределившимся с помощью надлежащего IDE, такие как Eclipse.

Редактировать: попробуйте потратить немного больше времени с карандашом и бумагой, разрабатывая логику вашей программы, прежде чем писать код для представления вашего алгоритма. Таким образом, у вас есть фокус и вы можете написать более полный, прокомментированный, более чистый код. Here - это немного руководство, которое поможет сконденсировать ваш существующий проект.

+1

Или [IntelliJ IDEA] (https://www.jetbrains.com/idea/), который предлагает очень хорошее бесплатное издание Community Edition. – dnault

+0

@dnault «Почему вы не используете Eclipse? Это очень простая IDE.» – Zulfe

+0

может кто-нибудь запустить этот код и рассказать мне, почему мой вывод дисплея не работает? –

Смежные вопросы