我正在尝试使用来自".hgt"格式文件的二进制数据的应用程序.我在C++中找到了一个解决方案,但是我无法弄清楚如何将该解决方案转换为C.文件中的每个值都是带符号的short int类型,并且有1201x1201的值.
const int SIZE = 1201;
signed short int matrix[SIZE][SIZE] = {0};
int main(int argc, const char * argv[])
{
using namespace std;
ifstream file("N49E013.hgt", ios::in|ios::binary);
unsigned char buffer[2];
for (int i = 0; i < SIZE; ++i)
{
for (int j = 0; j < SIZE; ++j)
{
if(!file.read( reinterpret_cast<char*>(buffer), sizeof(buffer) ))
{
cout << "Error reading file!" << endl;
system("PAUSE");
return -1;
}
matrix[i][j] = (buffer[0] << 8) | buffer[1];
}
}
Run Code Online (Sandbox Code Playgroud) 我以下面显示的方式创建了一个数组; 代表3对坐标.我的问题是我似乎无法找到数组中特定坐标对的索引.
import numpy as np
R = np.random.uniform(size=(3,2))
R
Out[5]:
array([[ 0.57150157, 0.46611662],
[ 0.37897719, 0.77653461],
[ 0.73994281, 0.7816987 ]])
R.index([ 0.57150157, 0.46611662])
Run Code Online (Sandbox Code Playgroud)
返回以下内容:
AttributeError: 'numpy.ndarray' object has no attribute 'index'
Run Code Online (Sandbox Code Playgroud)
我试图这样做的原因是我可以在一个for循环中扩展一个带有坐标对的索引的列表.
例如
v = []
for A in R:
v.append(R.index(A))
Run Code Online (Sandbox Code Playgroud)
我只是不确定为什么索引功能不起作用,似乎无法找到解决方法.
我是编程的新手,请原谅我,如果这看起来像废话.
我试图确定是否可以修改Java使用的拆箱方法.这样做的目的是能够做到:
class IInteger extends Integer {
@Override
public int unboxToPrimitive(){
return ++val;
}
}
IInteger i = 10;
System.out.print(i); // 11
Run Code Online (Sandbox Code Playgroud)
也就是说,重载方法并让它返回++ val而不是val.
我决定购买RubyMine 8.0(学生版).
我已经安装了Ruby,我可以从终端运行Ruby脚本.但是,我不能让RubyMine检测到这个解释器,我似乎无法设置它.
有没有必要的宝石?什么是宝石?
[![我收到此错误]](https://i.stack.imgur.com/MWkIU.png)
我的任务是编写一个记录飞行数据的程序,所以我决定制作一个飞行物体.
在此对象内是出发时间和到达时间.我不确定哪个对象最适合用于此,我希望将时间存储在24小时(hh:mm)时间内,并能够以小时和分钟计算飞行持续时间(hh:mm) ,我看过文档,我遇到了3个不同的时间对象.
1 java.util.Date
longs.2 java.sql.Date
longs进行操作.3 java.sql.Time
Time(long)构造函数.对我来说不是很有用,因为这意味着我需要在创造时间之前将每次转换为多头.TL;博士:
是否有任何库可以创建一个看起来像这样的时间
(pseudocode):
Object time = new Constructor(23,11)
Run Code Online (Sandbox Code Playgroud)
这不是"弃用"所以我不必先转换为long.或者,我必须自己制作Object?
System.nanoTime() 当编译相同的代码并针对java 7和java 8运行时,返回不同的值.
这段代码:
public class nanoTime
{
public static void main(String... args)
{
System.out.println("Found JVM: "
+ " " + System.getProperty("java.vm.vendor")
+ " " + System.getProperty("java.version")
+ " " + System.getProperty("java.vm.name")
);
System.out.println("time is "+ System.nanoTime());
}
}
Run Code Online (Sandbox Code Playgroud)
在java 7上打印出来
~ gdate +%s%N && javac7-oraclejdk nanoTime.java && java7-oraclejdk nanoTime
1480143769271605000
Found JVM: Oracle Corporation 1.7.0_80 Java HotSpot(TM) 64-Bit Server VM
time is 1480143769807547000
Run Code Online (Sandbox Code Playgroud)
这在java 8上
~ gdate +%s%N && javac nanoTime.java && java nanoTime
1480143724152650000
Found JVM: Oracle …Run Code Online (Sandbox Code Playgroud) 以下代码生成"未检查或不安全的操作"警告,如何在不引起警告的情况下转换Object o为类型T?我知道我可以压制警告,但我想知道"正确"的方式.
public class MyType<T> {
T cast(Object o) {
return (T)o; //<--- what causes the warning
}
}
Run Code Online (Sandbox Code Playgroud) 这是我的作业问题:"创建一个调用的方法roundAllUp(),它接收一个双精度数组并返回一个新的整数数组.这个返回的数组包含双精度数组中的所有数字,但是向上舍入."
这是我到目前为止的方法:
public static int[] roundUp(double[] array2){
for(int i = 0; i < array2.length; i++){
Math.ceil(array2[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
一旦值从双精度数组中向上舍入,我如何以整数数组返回它们?
我很难理解为什么这样:
addItem = item => {
this.setState({ grudges: [grudge, ...this.state.grudges] });
}
Run Code Online (Sandbox Code Playgroud)
相当尴尬的实施存在.岂不
this.state.grudges.push(grudge)
Run Code Online (Sandbox Code Playgroud)
满足?
我需要一个不可变列表,我可以从中派生出第二个不可变列表,该列表保留前一个列表的所有元素以及 Java 中的一个附加元素(无需附加库)。
注意:这个问题类似于将单个元素添加到不可变集合的有效且优雅的方法是什么?但我需要一个清单,而且没有番石榴。
到目前为止我尝试过的:
var list = List.of(someArrayOfInitialElements);
var newList = Stream.concat(list.stream(), Stream.of(elementToAppend))
.collect(CollectorsCollectors.toUnmodifiableList());
Run Code Online (Sandbox Code Playgroud)
这会起作用,但创建一个流并一个一个地复制元素对我来说似乎效率低下。鉴于List.of()将数据存储在基于字段或基于数组的数据结构中,您基本上可以批量复制内存。
有没有比使用流更有效的解决方案?我缺少的 Java 标准库中更好的数据结构?
java ×6
arrays ×2
c ×1
c++ ×1
casting ×1
collections ×1
datetime ×1
double ×1
ecmascript-6 ×1
generics ×1
immutability ×1
int ×1
integer ×1
javascript ×1
list ×1
nanotime ×1
numpy ×1
overloading ×1
python ×1
reactjs ×1
ruby ×1
rubymine ×1
ubuntu-14.04 ×1
wrapper ×1