部分方法未运行

时间:2016-10-14 01:50:07

标签: c#

my_decision_tree = sklearn.tree.DecisionTreeClassifier(splitter=mySplitter)

我试图用这种方法来收集4个班级的班级和成绩字母数量。当我调用该方法时,第一部分(下面)执行正常。

 static void getGrades()
    {
        Console.WriteLine("How many grade level classes are you taking?");
        int standardNumber = int.Parse(Console.ReadLine());
        Console.WriteLine();
        Console.WriteLine("How many honors level classes are you taking?");
        int honorsNumber = int.Parse(Console.ReadLine());
        Console.WriteLine();
        Console.WriteLine("How many AP level classes are you taking?");
        int apNumber = int.Parse(Console.ReadLine());
        Console.WriteLine();
        Console.WriteLine("Enter your letter grades when prompted.");
        Console.WriteLine("=======================================");
        for (int a = 1; a == standardNumber; a++)
        {
            int num = 1;
            Console.WriteLine("Enter letter grade for honors class {0}:", num);
            switch (num)
            {
                case 1:
                    string class1 = Console.ReadLine();
                    break;
                case 2:
                    string class2 = Console.ReadLine();
                    break;
                case 3:
                    string class3 = Console.ReadLine();
                    break;
                case 4:
                    string class4 = Console.ReadLine();
                    break;
                default:
                    break;
            }


            Console.WriteLine();

        }
    }

但是,其余代码(如下)不会执行。

    Console.WriteLine("How many grade level classes are you taking?");
    int standardNumber = int.Parse(Console.ReadLine());
    Console.WriteLine();
    Console.WriteLine("How many honors level classes are you taking?");
    int honorsNumber = int.Parse(Console.ReadLine());
    Console.WriteLine();
    Console.WriteLine("How many AP level classes are you taking?");
    int apNumber = int.Parse(Console.ReadLine());

有谁知道为什么会发生这种情况。提前致谢

2 个答案:

答案 0 :(得分:1)

根据您的逻辑,如果输入 >= 输入为1,则只会运行这些行,

standardNumber
顺便说一句,你不需要for循环。

修改

您需要将输入存储在集合中并在该

上执行循环
 for (int a = 1; a == standardNumber; a++)
 {
   int num = 1;    
}

答案 1 :(得分:0)

您的方法连续包含以下两行:

int apNumber = int.Parse(Console.ReadLine());
Console.WriteLine();

有两种方法可以执行第一行,但第二行不能执行:

  • 方法调用Console.ReadLine()永远不会返回,因为用户从不按“输入”。
  • 方法Console.ReadLine或方法int.Parse会引发异常。

我的猜测是int.Parse正在抛出异常。

更理论的答案:

如果我没记错的话,当我引用的代码运行时,无论如何都会发生以下之一

  • 第一行继续执行。
  • 第一行引发异常。
  • 线程在第二行执行之前终止。
  • 第一行返回,第二行执行。

如果最后一件事没有发生,其他事情必定会发生。