是否有任何直接的方式将从1980年1月6日开始的一定时间转换为UTC格式,如YYYY/MM/DD HH:mm:ss?
编辑:这是代码工作:
private Date gpsInit;
//...
try{
String ds = "06/01/1980";
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
gpsInit = df.parse(ds);
}
catch(ParseException e) {
System.out.println("Unable to parse January 6th 1980");
}
textField = new JFormattedTextField(format);
textField.setText(formatUTC(min));
//...
private String formatUTC(int timeValue) {
long diference = timeValue + gpsInit.getTime()/1000;
String pattern = "yyyy/MM/dd HH:mm:ss";
SimpleDateFormat utcFormat = new SimpleDateFormat(pattern);
Date utcNow = new Date(diference*1000);
return utcFormat.format(utcNow);
}
Run Code Online (Sandbox Code Playgroud) 给定一组值,我想确定它是一个增加还是减少的数组.当然,如果我们只想检测Monotone Increase/Decreasing,这是微不足道的.但是如果我们有这样的数组:
3,3.2,3.4,3.3,3.4,3.7,4.2,4.8
它确实是一个增加的数组,但不是单调的,因为对于i = 3,我们有3.3 <3.4
另外,对我来说,第一个和最后一个索引之间的单一检查不是一个选项,因为我可能正在处理角度,而且我可以完成多个圆圈:
270º,290º,315º,345º,5º
我会说顺时针方向也在增加,尽管5º<270º
另外,如果我定义从0到180然后-180到0而不是0到360的角度,这又是一个问题:
170º,175º,180º,-175º,-170º对我来说再次增加.
我想为C++编写这个,但对我来说重要的是要使用的算法.任何的想法?
我有一个带有MapView的Android应用程序,并且已经实现了缩放控件.但是我想检测缩放级别何时发生变化,所以当发生这种情况时我可以做某些事情.有没有听众这样做?任何例子?
我有一些ArrayList声明.其中一些是ArrayList<Integer>和其他人一样ArrayList<Double>.
我想从另一个类中获取它们,所以我写了一个方法:
private ArrayList<Double> list1, list2;
private ArrayList<Integer> list3;
public ArrayList getList(String nameOfList){
ArrayList myList = new ArrayList();
if(nameOfList.equals("list1")) myList = list1;
else if(nameOfList.equals("list2")) myList = list2;
else if(nameOfList.equals("list3")) myList = list3;
return myList;
}
Run Code Online (Sandbox Code Playgroud)
编译,但引发了一些警告:
*ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized* in the method above, and *Type safety: The expression of type ArrayList needs unchecked conversion to conform to List<? extends Number>* when calling the method …Run Code Online (Sandbox Code Playgroud) 我不知道为什么我会收到这个错误,因为它在一小时前编译得很完美,我在这里没有做任何改动.
我有一个名为SocketsStatus的类,然后我有许多线程,每个线程实现一个套接字连接.所以我传递了一个对SocketsStatus对象的引用来控制哪些是连接的,哪些不是.
套接字状态标题:
#ifndef SOCKETSSTATUS_H_
#define SOCKETSSTATUS_H_
#include <QMutex>
#include <BufferDatos.h>
class SocketsStatus {
public:
SocketsStatus();
int setBufferStatus(int bufferId, bool status);
bool isEveryBufferDisconnected();
virtual ~SocketsStatus();
private:
void init();
bool bufferRawMeasConnected;
bool bufferPosConnected;
bool bufferRtkConnected;
QMutex *mutex;
};
#endif /* SOCKETSSTATUS_H_ */
Run Code Online (Sandbox Code Playgroud)
然后,BufferDatos的标头的开头,这是我的Thread类:
#ifndef BUFFERDATOS_H_
#define BUFFERDATOS_H_
#include <QThread>
#include <QTcpSocket>
#include <SocketsStatus.h>
#include "Global.h"
class BufferDatos: public QThread {
public:
BufferDatos(QString ip, qint16 port, SocketsStatus &buffersStatusPassed);
virtual QByteArray extraerSiguienteMensaje(void) = 0;
virtual ~BufferDatos();
protected:
void run(void);
bool connect(void);
void receiveData(void); …Run Code Online (Sandbox Code Playgroud) 如何应用std::random_shuffle算法std::queue?我试过这个:
std::random_shuffle(myQueue.front(), myQueue.back());
Run Code Online (Sandbox Code Playgroud)
并给出错误:
我的队列正在举行Card代表扑克牌的课程.我可以理解,错误来自于对std::random_shuffle队列元素进行的操作所以,即使我不需要!= operator为我的Card类,我写了一个,并且该错误消失了.
但是我应该怎么处理其余的错误呢?operators +, - and ++为一Card堂课写作是没有意义的.
我必须将整数值乘以 2^31。我用谷歌搜索了一下,看起来双打的范围在 2.23e-308 <= |X| 之间 使用 64 位时 <= 1.79e308,并且是 1.18e-38 <= |X| 之间的浮点数 <= 3.40e38。
这比我需要的要多得多。但这不起作用。
我的头文件中有这个常量值:
static const float SCALE_FACTOR = 2^-31;
Run Code Online (Sandbox Code Playgroud)
如果那么我就这样做:
float dummy = SCALE_FACTOR;
Run Code Online (Sandbox Code Playgroud)
那么,dummy 的值为 11。
我不知道问题是否在于分配这样的常量值,但我不知道如何在不损失精度的情况下编写它。
有什么帮助吗?
编辑:抱歉,愚蠢的问题。我的 MatLab 背景背叛了我,忘记了 ^ 在 C++ 中不是用于求幂。我已投票结束。
c++ floating-point double double-precision floating-point-precision