2013-08-20 2 views
0

Я пытаюсь выполнить задачу Project Euler # 4 в C#. Проблема, с которой я сталкиваюсь, заключается в том, что когда код запускает окно консоли, кратковременно появляется, а затем исчезает. Я не знаю, что может быть проблемой, поскольку я относительно новичок в программировании.Project Euler # 4 in C#

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      for (int i = 1000; i > 100; i--) 
       for (int j = 1000; j > 100; j--) 
        PalCheck(i * j); 
     } 

     static void PalCheck(int original) 
     { 
      var reversed = new string(Convert.ToString(original).ToCharArray().Reverse().ToArray()); 

      if (Convert.ToString(original) == reversed) 
       Console.WriteLine(original); 

      Console.ReadKey(); 
     } 
    } 
} 
+0

Что бы вы хотели знать? Какая самая маленькая программа, в которой вы можете сделать проблему, исчезнуть или исчезнуть? Что делать, если вы ожидаете ввода пользователя до конца программы? ("нажмите любую клавишу для продолжения...")? – Floris

+0

Я бы хотел, чтобы он написал самый большой палиндром двух трехзначных чисел. (Таким образом, начиная с 1000X1000 и считая вниз) Линейка Console.ReadKey(); должен ждать ввода пользователя. – TheDezzick

+0

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

ответ

1

код, кажется, застрял на линии Console.ReadKey(), как в этой строке кода, программа ожидает некоторого ввода ключа. Поскольку вы не использовали какое-либо сообщение перед ReadKey(), вы не понимаете, что программа ждет ввода и не застревает.

Переместите консоль.ReadKey() после PalCheck (i * j), и вы увидите результат на экране консоли.

+0

Перемещение Console.ReadKey() после Palcheck (i * j) возвращает список всех палиндромов, которые являются продуктами трехзначных чисел. Это решает проблему, возникающую при появлении консоли, но не дает мне ответа. – TheDezzick

+0

Если вы хотите остановиться после первой проверки, вам нужно убедиться, что вы выполняете 'ReadKey' только после выполнения' '' '' '' '' '' '' '' ... – Floris

+0

Я добавил скобки в оператор if и поместите строку Console.GetKey() внутри скобок. Теперь он возвращает палиндром каждый раз, когда я нажимаю клавишу. Я вижу правильный ответ после нажатия клавиши несколько раз, но это не первый результат. – TheDezzick