我使用的com.google.android.gms:play-services-maps:7.5.0是谷歌地图服务版本.当试图打电话给下面我得到java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.maps.SupportMapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)' on a null object reference.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
SupportMapFragment mapFragment = (SupportMapFragment) getActivity().getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this); //error
return inflater.inflate(R.layout.fragment_example_map, container, false);
}
Run Code Online (Sandbox Code Playgroud)
fragment_example_map.xml文件:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="app.ExampleMap">
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud) 所以我要做的是将double转换为有理数.我检查小数点后有多少位数,我想将数字123.456保存为123456/1000,例如.
public Rational(double d){
String s = String.valueOf(d);
int digitsDec = s.length() - 1 - s.indexOf('.');
for(int i = 0; i < digitsDec; i++){
d *= 10;
}
System.out.println((int)d); //checking purposes
}
Run Code Online (Sandbox Code Playgroud)
但是,对于数字123.456,我得到一个舍入错误,结果是123455.我想有可能用BigDecimal解决这个问题,但我无法让它工作.此外,计算了它的有理数,我想调用另一个带参数的构造函数(int numerator,int denominator),但我现在无法在println所在的行中调用构造函数.我该怎么做?
我们使用下表作为示例:
tableId
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
我想选择tableId等于1或2的第一个值,如果没有选择任何行,则选择3或4.
我可以使用下面的select语句,但它只涵盖第一个条件:
SELECT tableId
FROM exampleTable
WHERE tableId = 1 OR tableId = 2
Run Code Online (Sandbox Code Playgroud)
我应该在查询中添加什么才能使其正常工作?