C # Console.WriteLine не печатает в одну строку - PullRequest
0 голосов
/ 04 октября 2018

Теперь, если вы запустите это, он не выводит каждый Console.WriteLine в одну строку, почему?Я знаю, что console.writeline переходит на следующую строку, когда готово, но проблема в том, что он переходит на следующую строку во время печати, когда печатается исключение var, которое находится не в той же строке, что и остальная часть записи. Ошибка возникает внутри функции Display()в переменной номер 6 (исключение) она не находится в той же строке, что и остальная часть записи, почему?

И также нет разрывов строк, где возникает ошибка.

Ans может быть любым числом, которое вам нравится.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace EquationSolver
{
    class Program
    {
        public static string exception = "No Solution Found yet";
        public static int go = 40;
        public static Decimal x = 0, formul = 0;
        public static Decimal pref = -100000, next = 100000,ans;
        public static Decimal stepval = next / 10;
        public static Decimal prefrem = 1234567890123.1234567890m, nextrem = 1234567890123.1234567890m;
        public static Decimal nextremfirst = 0;
        public static void Answer()
        {
          Console.WriteLine("Enter ans");
          ans = (Convert.ToDecimal(Console.ReadLine()));

        }
        public static void Main(string[] args)
        {
            //Console.WriteLine("Enter ans");
            //Answer(Convert.ToDecimal(Console.ReadLine()));
            Answer();
            //Console.Clear();

            while (true)
            {
                for (var i = 0; i <= go; i++)
                {
                    for (x = pref; x <= next; x += stepval)
                    {
                        formul = x;
                        if (formul < ans)
                            prefrem = x;
                        else if (formul > ans)
                        {
                            if (nextremfirst == 0)
                            {
                                nextrem = x;
                                nextremfirst += 2;
                            }
                        }
                        else if (formul == ans)
                        {
                            AnsFound();
                            break;
                        }
                        else
                        {
                            Error();
                        }
                        Display();
                    }

                    if (formul == ans)
                    {
                        AnsFound();
                        break;
                    }
                    if (prefrem != 1234567890123.1234567890m)
                        pref = prefrem;
                    if (nextrem != 1234567890123.1234567890m)
                        next = nextrem;
                    nextremfirst = 0;
                    stepval /= 10;
                    if (formul != ans)
                        NoAnsyet();

                    //Console.WriteLine();
                }
                Finnish();
            }
        }
        public static void Display()
        {
            //Console.ReadKey();
            //Console.WriteLine("Formul: {0} x: {1} Ans: {2} Status: {3}", //formul, x, ans, exception);

//Here is the error:
            Console.WriteLine("Pref:{0} Next:{1} Step:{2} Formul:{3} x:{4} Ans:{5} Status:{6}",pref,next,stepval,formul,x,ans,exception);
        }
        public static void Finnish()
        {
            if (formul != ans)
                Error();
            exception = "\ncomplete";
            Console.WriteLine(exception);
            pref = -100000;
            next =  100000;
            stepval = next /= 10;
            Console.ReadKey();
            Console.Clear();
            //Console.WriteLine("Enter ans:");
            //Answer(Convert.ToDecimal(Console.ReadLine()));
            Answer();
        }
        public static void AnsFound()
        {
            exception = "\nSolution Found!";
            //Console.WriteLine("x: {0} Ans: {1} Status: {2}", x, ans, exception);
            //Console.WriteLine("Pref:{0} Next: {1} Stepval: {2}     Formul:{3} x:{4} Ans:{5}  Status:{}", pref, next, stepval, formul, x, ans, exception);

        }
        public static void NoAnsyet()
        {
            exception = "\nNo Solution yet...";
            //Console.WriteLine(exception);
        }
        public static void Error()
        {
            exception = "\nNo Solution error!!";
            Console.WriteLine(exception);
        }
    }
}

Ответы [ 4 ]

0 голосов
/ 04 октября 2018

Согласно предоставленному коду, вы не вызвали метод, я внес некоторые изменения в код Отредактированный код и попробуйте запустить статус кода: Решение пока не найдено Спасибо

0 голосов
/ 04 октября 2018

Потому что вы установили exception = "\ncomplete"; в разных местах.\n в начале - это символ новой строки.

Удалите \n

exception = "complete";

Та же проблема с другими текстами, такими как "\nSolution Found!".


Использование интерполяции строки делает форматирование строки более читабельным:

Заменить

Console.WriteLine("Pref:{0} Next:{1} Step:{2} Formul:{3} x:{4} Ans:{5} Status:{6}",
    pref, next, stepval, formul, x, ans, exception);

на

Console.WriteLine(
$"Pref:{pref} Next:{next} Step:{stepval} Formul:{formul} x:{x} Ans:{ans} Status:{exception}");
0 голосов
/ 04 октября 2018

Значение вашей переменной exception является причиной, по которой консоль печатает по-другому, в основном, если вы вводите специальный символ \n означает новую строку, следовательно, все методы, которые вы вызываете, имеют этот специальный символ.

Решение удалить специальные символы и использовать методы Console.WriteLine или Console.Write

0 голосов
/ 04 октября 2018

Запись Строка пишет в новой строке.Вам следует попробовать

Console.Write()

Если вы хотите печатать сразу после предыдущей печати. ​​

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...