将Console.Readline()解析为int时出错 -

时间:2017-05-11 21:01:46

标签: c# .net arrays loops

我有一些控制台应用程序代码,其工作是从用户那里获取数字并将它们添加到数组中。但问题是我不知道用户要输入多少个数字。所以我决定添加某种停止键。例如,如果有足够的数字,用户可以按" N"并继续代码的另一部分。所以我的第一个问题是如何使这个代码在按下任何键时不给出未处理的格式异常。

public class Main
{
    int[] unsortiert={1,5,8,2,7,4};
    Bubblesorter bubble = new Bubblesorter();
    int [] sortiert = bubble.bubblesort(unsortiert);

    for (int i = 0; i<sortiert.length; i++) {
        System.out.print(sortiert[i] + ", ");
    }
}

public class Bubblesorter
{
    public int[] bubblesort(int[] zusortieren) {
        int temp;
        for(int i=1; i<zusortieren.length; i++) {
            for(int j=0; j<zusortieren.length-i; j++) {
                if(zusortieren[j]<zusortieren[j+1]) {
                    temp=zusortieren[j];
                    zusortieren[j]=zusortieren[j+1];
                    zusortieren[j+1]=temp;
                }
            }
        }
        return zusortieren;
    }
}

1 个答案:

答案 0 :(得分:1)

如果您只想要一个数字或一个字母,那么您应该使用Console.ReadKey而不是Console.ReadLine

您可以使用以下代码来获得所需内容。

    int[] arrayInt = new int[100];

    for (int i = 0; i < arrayInt.Length; i++)
    {

        var input = Console.ReadLine();

        if(input.Equals("n")){
             //for example
            Console.WriteLine("You pressed n");
        }else{

            if(int.TryParse(input, out arrayInt[i])){
                Console.WriteLine("It's a number");
            }else{
                Console.WriteLine("No number and no n!");   
            }
        }
    }

您使用ConsoleKey.N来检查&#34; n&#34;。但有了这个,用户必须输入&#34; N&#34;。 &#34; N&#34;不起作用。如果你想要它不具有案例意义,那么你可以从我的代码中改变这一行:

if(input.Equals("n")){

if(input.ToLower().Equals("n")){