C#中控制台输出问题

时间:2010-02-25 06:18:49

标签: c#

Console.WriteLine()上有一个小问题。我有我的while(true)循环,它将检查数据是否存在,并允许检查数据3次。在我的循环中,我有这样的信息:

  

Console.WriteLine(string.format(“Checking data {0}”,ctr));

以下是我的示例代码:

int ctr = 0;

while(true)
{
  ctr += 1;

  Console.WriteLine(string.format("Checking data {0}...",ctr))  

  if(File.Exist(fileName)) 
     break;

  if(ctr > 3)
     break;

}

我们假设没有找到数据。

我目前的输出显示如下:

Checking data 1...
Checking data 2...
Checking data 3...

但是我想要实现的正确输出应该是这样的:

Checking data 1...2...3...

我只会在一行中显示。

编辑:

我忘了:除了我的问题,我想附加“Not Found”和“Found”。

以下是输出示例:

  1. 如果在First循环输出中找到的数据如下所示。

    检查数据1 ...找到了!

  2. 如果在第二个循环输出上找到的数据如下所示。

    检查数据1 ... 2 ...找到了!

  3. 如果在第三个循环输出上找到的数据如下所示。

    检查数据1 ... 2 ... 3 ...找到了!

  4. AND如果找不到数据

    1. 检查数据1 ... 2 ... 3 ...未找到!

8 个答案:

答案 0 :(得分:8)

如果您不想换行,请使用Console.Write。您还需要将文本移出循环以避免重复。像

这样的东西
Console.WriteLine("Checking data");
int ctr = 0;
bool found = false; 

while (ctr++ < 3 && !found) {
   Console.Write(" {0}...", ctr);
   if (File.Exists(fileName)) found = true;
}
Console.WriteLine(found ? "Found" : "Not found");

答案 1 :(得分:4)

旁注:
而不是使用Console.WriteLine(string.format("Checking data {0}...",ctr));
您可以使用Console.WriteLine("Checking data {0}...",ctr);,在我看来,这更容易阅读

答案 2 :(得分:1)

您可以在while循环之前输出“Checking data”。 所以代码将是这样的:

Console.Write("Checking data ")
int ctr = 0;
while(true) {

    ctr += 1;

    Console.Write(string.format("{0}...",ctr))

    if (File.Exist(fileName)) break;

    if (ctr > 3) break;

}

答案 3 :(得分:1)

减少条件检查的更好方法(至少我觉得如此)

public static void Main(string[] args)
{
    int ctr = 0;
    string fileName = args[0];
    string result = "Checking data ";
    do
    {
        ctr += 1;
        result += ctr.ToString() + "...";
    }
    while(!File.Exists(fileName) && ctr <= 3);
    Console.WriteLine(result);
}

答案 4 :(得分:1)

public static void Main(string[] args)
{
    int retries = 0;
    bool success = false;
    int maxRetries = 3;
    string fileName = args[0];

    Console.Write("Checking data ");

    while(!success && retries++ < maxRetries)
    {
        Console.Write("{0}...", retries);
        success = File.Exists(fileName);
    }
    Console.WriteLine(" {0}Found!", (success ? "" : "Not ") );
}

答案 5 :(得分:0)

使用Console.Write()以避免添加新行。

要防止多次打印“检查数据”,请将其移出循环。

答案 6 :(得分:0)

你必须使用

Console.Write()

答案 7 :(得分:-1)

试试这段代码:

 int ctr = 0;
 string result = "Checking data ";
 while(true) {

     ctr += 1;

     result += ctr.ToString() + "...";

     if(File.Exist(fileName))
     {
         result += "Found";
         break;
     }

     if(ctr > 3)
     {
         result += "Not Found";
         break;
     }
 }
 Console.WriteLine(result);