程序在c ++中使用带有do while循环的cin输入用户时间时会一直进入无限循环

问题描述 投票:-4回答:1

我正在尝试为课程编写一个程序,我们必须花费用户时间(出发地+到达时间),然后输出用户写入控制台的任何内容。我正在使用do while循环。我正在使用if语句来验证属性输入。当我每次运行程序时,它只是一遍又一遍地询问到达时间。我需要根据用户输入的内容追加“am”或“pm”,这就是为什么有两个值的char数组的原因。请帮忙

char ampm1[2];

    // char ampm = 'p';
    int temp;
    do 
    {
        cout << "Please enter your arrival time in the following format: '10:30'. This IS NOT MILITARY TIME.";
        cin >> temp;
        arrival_hour = temp / 100;
        arrival_min = temp % 100;
        cout << "Is this AM or PM?";
        cin >> ampm1;
    } 
    while (arrival_hour > 12 || arrival_hour < 0 || departure_min >= 60);




    cout << "Your arrival time is: " << setfill('0') << setw(2) << arrival_hour << ":" << setfill('0') << setw(2)
        << arrival_min << ampm1;
c++ loops validation while-loop
1个回答
0
投票

我在您的代码段中发现的一些问题:

1)ampm1是一个大小为2的字符数组,虽然你想存储“am”或“pm”,技术上需要2 + 1 = 3个字节(空终止符为1个字节)。这将导致意外的字符串行为,并且使用不正确。

2)您已将temp指定为整数,并且您希望输入格式为:HH:MM。这又是不正确的。您可以做的是将输入作为字符串获取并将其分隔为“:”。接下来,您可以使用atoi()将HH和MM转换为整数组件。

© www.soinside.com 2019 - 2024. All rights reserved.