我正在添加这个问题,因为我是Java和Android的新手,我搜索了几个小时试图解决这个问题.答案来自相关答案的组合,所以我想我会记录我为其他可能正在努力的人学到的东西.见答案.
对于一些背景知识,我的经验主要是PHP的Web开发和一点Ruby.我唯一的操作系统是Linux(Ubuntu Studio),我(不情愿地)在Android Studio 2.1.2中开发我的第一个Android应用程序.我的Java设置如下:
>java -version
> openjdk version "1.8.0_91"
> OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1-b14)
> OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud) datetime android android-gradle-plugin threetenbp threetenabp
一般问题:反转流的正确方法是什么?假设我们不知道流包含哪种类型的元素,那么反转任何流的通用方法是什么?
具体问题:
IntStream提供范围方法来生成特定范围内的整数IntStream.range(-range, 0),现在我要反转它切换范围从0到负不起作用,我也不能使用Integer::compare
List<Integer> list = Arrays.asList(1,2,3,4);
list.stream().sorted(Integer::compare).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
与IntStream我会得到这个编译器错误
错误:(191,0)ajc:
sorted()类型中的方法IntStream不适用于参数(Integer::compare)
我在这里想念的是什么?
我需要找到两个日期之间的天数:一个来自报告,一个是当前日期.我的片段:
int age=calculateDifference(agingDate, today);
Run Code Online (Sandbox Code Playgroud)
这calculateDifference是一个私有方法,agingDate并且today是Date对象,仅供您澄清.我已经关注了Java论坛中的两篇文章,即Thread 1/Thread 2.
它在独立程序中运行良好,但是当我将其包含在我的逻辑中以从报告中读取时,我会得到一个不寻常的值差异.
为什么会发生这种情况?我该如何解决?
编辑:
与实际天数相比,我获得的天数更多.
public static int calculateDifference(Date a, Date b)
{
int tempDifference = 0;
int difference = 0;
Calendar earlier = Calendar.getInstance();
Calendar later = Calendar.getInstance();
if (a.compareTo(b) < 0)
{
earlier.setTime(a);
later.setTime(b);
}
else
{
earlier.setTime(b);
later.setTime(a);
}
while (earlier.get(Calendar.YEAR) != later.get(Calendar.YEAR))
{
tempDifference = 365 * (later.get(Calendar.YEAR) - earlier.get(Calendar.YEAR));
difference += tempDifference;
earlier.add(Calendar.DAY_OF_YEAR, tempDifference);
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试将折线添加到当前位置和动态添加到地图的标记之间的地图。它应该工作的方式是,当InfoWindow按下标记时,会打开一个对话框,询问您是否要前往该点,当按下“是”选项时,它应该将折线添加到该点。
单击信息窗口时:
\n\npublic void onInfoWindowClick(final Marker marker1) {\n final AlertDialog.Builder builder = new AlertDialog.Builder(this);\n builder.setMessage("Dori\xc8\x9bi s\xc4\x83 merge\xc8\x9bi la aceast\xc4\x83 alert\xc4\x83?")\n .setCancelable(true)\n .setPositiveButton("Da", new DialogInterface.OnClickListener() {\n public void onClick(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) {\n ScoateMarkerRute();\n markerSelectat=marker1;\n layout_confirmare.setVisibility(GONE);\n layout_validare.setVisibility(GONE);\n calculateDirections(marker1);\n dialog.dismiss();\n }\n })\n .setNegativeButton("Nu", new DialogInterface.OnClickListener() {\n public void onClick(final DialogInterface dialog, @SuppressWarnings("unused") final int id) {\n dialog.cancel();\n }\n });\n final AlertDialog alert = builder.create();\n alert.show();\n}\nRun Code Online (Sandbox Code Playgroud)\n\n计算方向();:
\n\nprivate void calculateDirections(Marker marker){\n Log.d(TAG, "calculateDirections: …Run Code Online (Sandbox Code Playgroud) 你好,我对 Android 还是有点陌生,
目前我对本地日期(或我尝试过的任何其他日期格式)有一个大问题
LocalDate currentDate = LocalDate().now();
Run Code Online (Sandbox Code Playgroud)
此行产生以下错误:
Call requires API Level 26 (current min is 21)
Run Code Online (Sandbox Code Playgroud)
我完全理解这意味着什么,但我无法更改项目的 API 级别(因为我与我的老师签订了合同,我和一个合作伙伴将按照我们计划的方式完成我们的学校项目。 )
如何在 API 级别 21 中使用任何类型的日期?
摇篮:
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.example.fragment"
minSdkVersion 21
targetSdkVersion 29
versionCode 1
versionName "0.5"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
android {
compileOptions {
coreLibraryDesugaringEnabled true
}
}
}
dependencies {
implementation fileTree(dir: 'libs', …Run Code Online (Sandbox Code Playgroud) android ×3
java ×3
api ×1
date ×1
datediff ×1
datetime ×1
google-maps ×1
java-8 ×1
java-stream ×1
jodatime ×1
threetenabp ×1
threetenbp ×1