我给输入1到9 ..如果相同的输入发生5次,在30秒内我想打印它

时间:2017-06-28 02:35:48

标签: c#

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    RoomListQuery.this.setLoading(false);
    //mListAdapter.setLoading(false);
    if (!dataSnapshot.hasChildren()) {
        RoomListQuery.this.currentPage--;
    }
    int i = 0;
    for (DataSnapshot ds : dataSnapshot.getChildren()) {
        Room room = ds.getValue(Room.class);
        roomList.add(room); // here instead
        updateRoom(room, i);
        i++;
    }
    handler.onResult(roomList, (customException) null);
}

...
// outside of the ValueEventListener
public void updateRoom(room, index) {
    Room.getRoom(room.getId(), new Room.RoomGetHandler() {
        @Override
        public void onResult(Room room, customException e) {
            if (e != null) {
                // Error!
                e.printStackTrace();
                return;
            }
            room._loadedDetails = true; // make that publicly accessible boolean, or include a setter method instead
            roomList.set(index, room);
        }
    });
}

我是编程新手......

我试图打印数字如果它在30秒内发生了5次...... 我输入1到9 ..如果相同的输入发生了5次,在30秒内我想要打印..

2 个答案:

答案 0 :(得分:0)

你有一些错误:

您可能想要替换:

if(time < time.AddSeconds(30))

将某些内容与当前时间进行比较,例如:

if(DateTime.Now < time.AddSeconds(30))

您还在检查方法中将计数递增两次,不确定这是否是故意的。

在do循环内部,你的开关体需要在{}内部,你可能应该每次都读取一个新的输入或做其他事情来改变输入,否则你的循环将永远运行。

您还应始终验证用户输入。在这种情况下,如果有人输入的数字不是数字,那么您的应用程序将从此代码中崩溃:

 sinput = Console.ReadLine();
 input = int.Parse(sinput);

而是查找int.TryParse方法。

答案 1 :(得分:0)

您可以创建类似于记录某个输入值的数据的类(即存储它们的输入日期)和绑定它们的类。比如,在伪代码中:

class SingleInputLogger {

    List<Date> dates

    void addDate(Date date){
        push date in dates
    }

    unsigned int currentSize(){
        remove all entries from dates which are too old
        return size of dates
    }
}

class InputLogger {

    Array<SingleInputLogger> singleInputLoggers of size 10 (or 9 if only 1..9, but then mind the offset)

    //adds an input and also returns true if the input has a count of more than five
    void addInput(int input){
        singleInputLoggers[input].addDate(currentTime())

    }

    bool checkInput(int input){
        if(singleInputLoggers[input].currentSize() >= 5){
            return true
        }
        return false
    }

然后主程序变为

InputLogger logger

while(get input){
    logger.addInput(input)
    if(logger.checkInput(input)){
        display message "input " + input + " was entered more than five times in 30s"
    }
}

(List用于表示链接列表,以便能够有效地删除前端条目,Array用于指示静态大小的结构以便快速访问)

请记住让这样的课程为您完成工作。尝试使用尽可能少的函数,而不是使用方法。

如果某人有更好的名字(我承认我的名字不是那么好),请随时编辑我的答案。