【问题标题】:How do I add 1 to a user input in C# in Visual Studio 2022?如何在 Visual Studio 2022 的 C# 中将用户输入加 1?
【发布时间】:2022-11-25 10:58:28
【问题描述】:

要求用户输入他们的姓名和当前年龄。 编写代码打印个性化的问候语,并告诉他们下一次生日时的年龄。

例如 如果用户输入“Kelly”和“43”, 你的程序应该输出:

“你好,凯利,下一个生日你就 44 岁了。”

这是我的代码,它一直把 1 放在数字的末尾而不是做加法,例如“你好伯爵,下一个生日你将是 181 岁”而不是“你好伯爵,下一个生日你将是 19 岁”。

static void Main(string[] args)
        {
            string name, input;
            int age;
            Console.WriteLine("What is your name?");
            name= Console.ReadLine();
            Console.WriteLine("What is your age?");
            input = Console.ReadLine();
            age = Convert.ToInt32(input);
            Console.WriteLine("Hello " + name + ", on your next birthday you will be  "+age +1);
            Console.ReadLine();
        }
    }
}

【问题讨论】:

  • 您缺少括号以在字符串连接之前执行整数和:"..." + (x + 1)。没有它们,运算符将从左到右应用于您的参数 - 如:"..." + x + 1 => "...x" + 1 => "...x1"

标签: c# c#-4.0 user-input add c#-3.0


【解决方案1】:

看看这个 sn-p 代码:

"Hello " + name + ", on your next birthday you will be  "+age +1

请注意,那里有四个 + 运算符。前三个在做什么?他们正在执行字符串连接。您似乎认为由于某种原因最后一个将首先完成。它不会。它会最后完成,在 age 的值已经连接成一个字符串之后,因此它也会执行字符串连接,这正是您所看到的。

如果您希望在字符串连接之前首先完成数字加法,那么您必须以某种方式表明这一点。一种方法是先单独进行,然后在字符串连接中使用结果,例如

age = age + 1;

另一种方式是指示该操作应首先在复杂表达式中完成。如果你在学校学过最基础的数学,你就会知道这是用括号完成的:

"Hello " + name + ", on your next birthday you will be " + (age + 1)

【讨论】:

  • 谢谢,你也回答了我的困境:))
【解决方案2】:

这样就可以了。

Console.WriteLine($"Hello {name}, on your next birthday you will be {age++}");

您不能像刚刚尝试的那样随时随地添加。 这样您就可以以更易于阅读的方式连接您的字符串。

【讨论】:

  • 对不起,我懒得自己尝试这个。如果你只是把 (age+1) 放在你的字符串的末尾,你能检查会发生什么吗?
【解决方案3】:

下面的代码将修复错误

static void Main(string[] args)
        {
            string name, input;
            int age;
            Console.WriteLine("What is your name?");
            name= Console.ReadLine();
            Console.WriteLine("What is your age?");
            input = Console.ReadLine();
            age = Convert.ToInt32(input);

            // Change in below line
            Console.WriteLine("Hello " + name + ", on your next birthday you will be  " + (age +1));
            Console.ReadLine();
        }
    }
}

更改在这行代码中

Console.WriteLine("Hello " + name + ", on your next birthday you will be  "+(age +1));

它一直将 1 放在末尾的原因是因为它在上面的代码行上进行了字符串连接。

Console.WriteLine() 只是将所有连接视为字符串。因此,age 被作为字符串传入,1 也被视为字符串。因此,程序连接 18 + 1 给出 181

通过将此评估放在括号中,我们指示程序首先评估括号中的内容(即 18+1 = 19),从而返回所需的输出

【讨论】:

    猜你喜欢
    • 2023-02-06
    • 2022-08-18
    • 1970-01-01
    • 2021-12-21
    • 2021-09-03
    • 2021-12-02
    • 2022-01-13
    • 2023-01-04
    • 1970-01-01
    相关资源
    最近更新 更多