过去几天我一直在编写一些控制台应用程序,但是最近当我尝试启动而没有调试(Cntl + F5)时,它打开了C:\ Windows \ system32 \ cmd.exe,而不是程序控制台。当我用F5开始时,一切正常。我想我搞砸了选项或其他东西,但我似乎无法找到解决方法。请帮忙吗?
编辑:这是一些示例代码 - 它打印一个带整数的螺旋矩阵
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _14_SpiralMatrix
{
class MatrixD
{
static int[,] matrix;
static int sideSize;
static int counter = 1;
static int row = 0;
static int col = 0;
static bool finished = false;
static void Main(string[] args)
{
sideSize = int.Parse(Console.ReadLine());
matrix = new int[sideSize, sideSize];
while (finished == false)
{
GoDown();
GoRight();
GoUp();
GoLeft();
}
Console.WriteLine();
PrintMatrix();
}
static void PrintMatrix()
{
for (int i = 0; i < sideSize; i++)
{
for (int j = 0; j < sideSize; j++)
{
if (matrix[i, j] < 9)
{
Console.Write(matrix[i, j] + " ");
}
else
{
Console.Write(matrix[i, j] + " ");
}
}
Console.WriteLine();
Console.WriteLine();
}
}
static void GoDown()
{
if (matrix[row, col] != 0)
{
finished = true;
}
//assign numbers until it reaches the end of matrix, or already assigned number
while (row < sideSize && matrix[row, col] == 0)
{
matrix[row, col] = counter;
row++;
counter++;
}
//shift row and col so next method can start from the next empty cell
row--;
col++;
}
static void GoRight()
{
//if next empty cell is filled up, than end of spiral is reached
if (matrix[row, col] != 0)
{
finished = true;
}
while (col < sideSize && matrix[row, col] == 0)
{
matrix[row, col] = counter;
col++;
counter++;
}
col--;
row--;
}
static void GoUp()
{
if (matrix[row, col] != 0)
{
finished = true;
}
while (row > -1 && matrix[row, col] == 0)
{
matrix[row, col] = counter;
row--;
counter++;
}
row++;
col--;
}
static void GoLeft()
{
if (matrix[row, col] != 0)
{
finished = true;
}
while (matrix[row, col] == 0)
{
matrix[row, col] = counter;
col--;
counter++;
}
col++;
row++;
}
}
}
答案 0 :(得分:1)
根据汤姆的建议,我决定将评论作为答案发布,以便更加明显(显然它也很有用)。
如果您正在运行某些防病毒程序(特别是Avast,但其他人可能会产生相同的效果),那么您的防病毒程序可能会占用您的控制台窗口,关闭它,然后通过cmd重新运行您的应用程序。可执行程序。我认为反病毒正在对您的程序进行安全检查。您可以将您的可执行文件作为防病毒软件中的例外情况进行记录,也可以暂时禁用您的防病毒软件(出于明显的安全原因,我建议使用后者而不是后者)。
我不知道OP是否找到了原始问题,但我写这篇文章是希望它能帮助别人!
答案 1 :(得分:0)
转到工具 - &gt; 选项,然后选择环境 - &gt; 键盘。然后单击按快捷键文本框,然后按 Ctrl + F5 。你应该看到这个:
如果您已选择Debug.StartWithoutDebugging
,请右键单击您的项目并选择属性。在左侧列表中选择 Debug ,并验证它是启动项目(同时验证是否已设置相应的配置):
如果一切设置正确,那么只需要您的代码完成任何打印。尝试将Main
方法代码的最后几行更改为:
Console.WriteLine();
Console.WriteLine("PrintMatrx:");
PrintMatrix();
另请注意,您在此处从键盘读取输入:
sideSize = int.Parse(Console.ReadLine());
在您输入内容并按 enter 键之前,程序将不会继续。您可以使应用程序的行为更具可读性:
Console.Write("Enter side size:");
sideSize = int.Parse(Console.ReadLine());
答案 2 :(得分:0)
问题:实际上您的程序没有问题。您的程序正在等待从用户读取整数而不在控制台上显示任何文本。因此,当您从非调试模式运行它时,它似乎是命令提示符而不是您的控制台。
解决方案:只需在Console.ReadLine()
声明
试试这个:
static void Main(string[] args)
{
Console.WriteLine("Enter some Integer"); // <-- print some text on console before read statement
sideSize = int.Parse(Console.ReadLine());
答案 3 :(得分:0)
您是否尝试检查Visual Studio许可证是否已正确应用?
当我在安装VS后尝试测试“Hello world”控制台应用程序时,我曾经遇到过这个问题。我甚至不会删除Process Explorer的控制台进程。
希望这可以提供帮助。