dz

CRM

Exit code: 1 Errors while compiling: g:\codelearning\C_Breach_of_Faith.cpp: �ں�����void solve_breach_of_faith(int)����: g:\codelearning\C_Breach_of_Faith.cpp:31:107: ���󣺡�accumulate���ڴ�����������δ���� 0LL, [](long long acc, long long val){return acc+pow(-1,val)*val;})); ^ g:\codelearning\C_Breach_of_Faith.cpp:33:95: ���󣺡�LLONG_MAX���ڴ�����������δ���� temp_sequence.insert(next(begin(temp_sequence), static_cast<ptrdiff_t>(pos)), LLONG_MAX); ^~~~~~~~~ g:\codelearning\C_Breach_of_Faith.cpp:38:41: ����������Ϊ��double������ֵ��ʼ������Ϊ��double&���ķdz���������Ч auto& elem = idx >= pos ? temp_sequence[idx-((idx>=pos)?1:0)] : ((idx==pos)?expected_sum-temp_sequence[pos]:temp_sequence[idx]); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ g:\codelearning\C_Breach_of_Faith.cpp:48:50: ���󣺡�numeric_limits���ڴ�����������δ���� abs(roundl(abs(expected_sum))) < numeric_limits<double>::epsilon()){ ^~~~~~~~~~~~~~ g:\codelearning\C_Breach_of_Faith.cpp:48:65: ����expected primary-expression before ��double�� abs(roundl(abs(expected_sum))) < numeric_limits<double>::epsilon()){ ^~~~~~ g:\codelearning\C_Breach_of_Faith.cpp:48:65: ����expected ��)�� before ��double�� g:\codelearning\C_Breach_of_Faith.cpp:50:29: ���󣺶Գ�Ա��join������������ڡ�" "���У������߾��з������͡�const char [2]�� cout << " ".join(to_string(x) for(auto &x : temp_sequence)); ^~~~ g:\codelearning\C_Breach_of_Faith.cpp:50:44: ���󣺡�x���ڴ�����������δ���� cout << " ".join(to_string(x) for(auto &x : temp_sequence)); ^
03-11
package com.jd.projects.wlw.weatherinfo; import android.app.AlertDialog; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.LinearLayout; import android.widget.NumberPicker; import android.widget.TextView; import android.widget.Toast; import com.github.mikephil.charting.charts.LineChart; import com.github.mikephil.charting.components.YAxis; import com.github.mikephil.charting.data.Entry; import com.github.mikephil.charting.data.LineData; import com.github.mikephil.charting.data.LineDataSet; import com.github.mikephil.charting.formatter.IAxisValueFormatter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.Locale; import java.util.List; import android.graphics.Color; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import com.google.gson.Gson; import java.io.IOException; import java.net.URLEncoder; import com.github.mikephil.charting.components.XAxis; import com.github.mikephil.charting.components.AxisBase; import java.util.Map; import java.util.HashMap; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import java.util.concurrent.TimeUnit; import com.google.gson.GsonBuilder; import com.jd.projects.wlw.R; import java.lang.reflect.Type; import com.google.gson.JsonDeserializer; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonParser; import com.google.gson.JsonNull; import android.content.Context; import java.util.Collections; import com.github.mikephil.charting.components.MarkerView; import com.github.mikephil.charting.highlight.Highlight; import com.github.mikephil.charting.utils.MPPointF; import java.util.TimeZone; import java.util.LinkedHashMap; public class XqhtjfxActivity extends AppCompatActivity { private static final boolean TEST_MODE = true; private static final String TEST_STATION_ID = "860048072347493"; private static final String TEST_STATION_NAME = "奎屯市开干齐乡高疙瘩泉村"; private String currentStationId; private TextView nAme; private Calendar startCalendar; private Calendar endCalendar; private String selectedProperty; private String selectedYear; private long startYear; private long endYear; public void onBottomNavClick(View view) { String buttonText = ((TextView) ((LinearLayout) view).getChildAt(1)).getText().toString(); Class<?> targetActivity = null; switch (buttonText) { case "实时监测": targetActivity = XqhActivity.class; break; case "历史数据": targetActivity = XqhLssjActivity.class; break; case "数据汇总": targetActivity = XqhSjhzActivity.class; break; case "月度查询": showDateRangePicker1(); return; case "统计分析": return; // 已在当前页面 } if (targetActivity != null) { Intent intent = new Intent(this, targetActivity); intent.putExtra("stationId", currentStationId); intent.putExtra("stationName", nAme.getText().toString()); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(intent); finish(); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.xqhtjfx); // 新增参数完整性校验 if (getIntent() == null || !getIntent().hasExtra("stationId")) { showError("非法访问,缺少监测站参数"); // finish(); return; } currentStationId = TEST_MODE ? TEST_STATION_ID : getIntent().getStringExtra("stationId"); if (currentStationId == null || currentStationId.isEmpty()) { showError("监测站ID获取失败"); // finish(); return; } // 获取选中的属性和年份 selectedProperty = getIntent().getStringExtra("selectedProperty"); selectedYear = getIntent().getStringExtra("selectedYear"); // 新增年份有效性校验 try { int year = Integer.parseInt(selectedYear); int currentYear = Calendar.getInstance().get(Calendar.YEAR); if (year < 2000 || year > currentYear + 1) { showError("无效的年份参数"); // finish(); return; } } catch (NumberFormatException e) { showError("年份格式错误"); finish(); return; } if (selectedProperty == null || selectedYear == null) { Toast.makeText(this, "请选择属性和年份", Toast.LENGTH_SHORT).show(); // finish(); return; } nAme = (TextView) findViewById(R.id.nAme); nAme.setText(getIntent().getStringExtra("stationName")); // 初始化折线图 LineChart chart = (LineChart) findViewById(R.id.chart); initializeChart(chart); // 初始化站点信息 if (TEST_MODE) { currentStationId = TEST_STATION_ID; nAme.setText(TEST_STATION_NAME); } else { Intent intent = getIntent(); if (intent != null) { currentStationId = intent.getStringExtra("stationId"); String stationName = intent.getStringExtra("stationName"); nAme.setText(stationName != null ? stationName : "监测点信息异常"); } } // 调用后台接口获取数据 fetchAnnualData(); } private void initializeChart(LineChart chart) { chart.setTouchEnabled(true); chart.setDragEnabled(true); chart.setScaleEnabled(true); chart.setPinchZoom(true); chart.getDescription().setEnabled(false); } private void fetchAnnualData() { String apiProperty = getApiProperty(selectedProperty); if (apiProperty.isEmpty()) { showError("无效的属性参数"); return; } new Thread(() -> { try { // 使用URL编码处理参数 String encodedProperty = URLEncoder.encode(apiProperty, "UTF-8"); String encodedStationId = URLEncoder.encode(currentStationId, "UTF-8"); String url = "http://117.190.40.178:8080/api/qixiang/" + encodedProperty + "/" + selectedYear + "?stationId=" + encodedStationId; // Log.d("API_REQUEST", "请求URL: " + url); // 新增超时设置 OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(20, TimeUnit.SECONDS) .readTimeout(45, TimeUnit.SECONDS) .retryOnConnectionFailure(true) // 添加重试机制 .build(); Request request = new Request.Builder() .url(url) .addHeader("Station-ID", currentStationId) // 双重验证 .build(); Response response = client.newCall(request).execute(); if (response.isSuccessful()) { String jsonData = response.body().string(); // 添加调试日志 // Log.d("API_RESPONSE", "原始响应: " + jsonData); Gson gson = new GsonBuilder() .setLenient() .registerTypeAdapter(JsonElement.class, new JsonDeserializer<JsonElement>() { @Override public JsonElement deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) { try { return new JsonParser().parse(json.getAsString()); } catch (Exception e) { return JsonNull.INSTANCE; } } }) .create(); JsonElement jsonElement = gson.fromJson(jsonData, JsonElement.class); if (jsonElement.isJsonArray()) { processJsonArray(jsonElement.getAsJsonArray(), apiProperty); } else if (jsonElement.isJsonObject()) { JsonObject jsonObject = jsonElement.getAsJsonObject(); // 检查状态码 if (jsonObject.has("code")) { int code = jsonObject.get("code").getAsInt(); if (code != 200) { String message = jsonObject.has("message") ? jsonObject.get("message").getAsString() : "未知错误"; showError("服务器错误: " + message); return; } } // 提取数据数组 if (jsonObject.has("data")) { JsonElement dataElement = jsonObject.get("data"); if (dataElement.isJsonArray()) { processJsonArray(dataElement.getAsJsonArray(), apiProperty); } else { showError("数据格式异常:data字段不是数组"); } } else { showError("响应缺少data字段"); } } else { showError("未知的响应格式"); } } else { parseErrorResponse(response); } } catch (Exception e) { e.printStackTrace(); showError("请求错误: " + e.getMessage()); } }).start(); } private Map<String, DailyStats> calculateDailyStats(List<DataPoint> dataPoints) { Map<String, DailyStats> dailyMap = new HashMap<>(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); sdf.setTimeZone(TimeZone.getTimeZone("UTC")); // 统一使用UTC时区 for (DataPoint data : dataPoints) { try { // 使用UTC时区转换时间戳 String dateStr = sdf.format(new Date(data.getTimestampMillis())); float value = (float) data.getValue(); if (!dailyMap.containsKey(dateStr)) { dailyMap.put(dateStr, new DailyStats(value, value, value, 1)); } else { DailyStats stats = dailyMap.get(dateStr); stats.min = Math.min(stats.min, value); stats.max = Math.max(stats.max, value); stats.sum += value; stats.count++; } } catch (Exception e) { // Log.e("StatsError", "日期统计异常", e); } } return dailyMap; } private void processJsonArray(JsonArray jsonArray, String apiProperty) { List<DataPoint> dataPoints = new ArrayList<>(); SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); inputFormat.setTimeZone(TimeZone.getTimeZone("UTC")); for (JsonElement element : jsonArray) { try { JsonObject obj = element.getAsJsonObject(); // 验证stationId匹配 String receivedStationId = obj.get("StationId").getAsString(); if (!receivedStationId.equals(currentStationId)) { // Log.w("STATION_MISMATCH", "收到非当前站点数据,跳过处理"); continue; } // 解析时间 String monitorTime = obj.get("MonitorTime").getAsString(); Date date = inputFormat.parse(monitorTime); // 修改点2:增强数值解析逻辑 JsonElement valueElement = obj.get(apiProperty); if (valueElement == null || valueElement.isJsonNull()) { // Log.w("DATA_ERROR", "缺少属性字段: " + apiProperty); continue; } double value; try { // 尝试直接获取数值 value = valueElement.getAsDouble(); } catch (NumberFormatException | IllegalStateException e) { // 处理字符串格式数值 String stringValue = valueElement.getAsString(); if (stringValue.isEmpty()) { // Log.w("VALUE_PARSE", "空值数据: " + element.toString()); continue; } try { value = Double.parseDouble(stringValue); } catch (NumberFormatException ex) { // Log.e("VALUE_PARSE", "数值转换失败: " + stringValue); continue; } } // 修改点3:添加特殊值处理 if ((apiProperty.equals("RainAdd") || apiProperty.equals("evaporation_capacity")) && value == 0.0) { // Log.d("ZERO_VALUE", "接收到合法零值: " + value); } // 创建数据点 DataPoint dp = new DataPoint(); dp.setTimestampMillis(date.getTime()); dp.setValue(value); dataPoints.add(dp); } catch (ParseException e) { // Log.e("TIME_PARSE", "时间解析失败: " + element.toString(), e); } catch (Exception e) { // Log.e("PARSE_ERROR", "数据解析异常", e); } } // 添加调试日志显示解析结果 // Log.d("DATA_POINTS", "成功解析数据点数量: " + dataPoints.size()); runOnUiThread(() -> processData(dataPoints)); } private void parseErrorResponse(Response response) { try { String errorBody = response.body().string(); runOnUiThread(() -> Toast.makeText(this, "请求失败:" + response.code() + "\n" + errorBody, Toast.LENGTH_LONG).show()); } catch (IOException ex) { runOnUiThread(() -> Toast.makeText(this, "错误信息解析失败", Toast.LENGTH_SHORT).show()); } } private void processData(List<DataPoint> dataPoints) { LineChart chart = (LineChart) findViewById(R.id.chart); chart.clear(); if (dataPoints.isEmpty()) { showError("无数据"); return; } DataPoint firstPoint = dataPoints.get(0); if (firstPoint.getTimestampMillis() == 0) { showError("数据解析异常:无效的初始数据点"); return; } // 计算每日统计数据 Map<String, DailyStats> dailyStats = new LinkedHashMap<>(); // 保持日期顺序 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); sdf.setTimeZone(TimeZone.getTimeZone("UTC")); // 按天分组数据 for (DataPoint dp : dataPoints) { String dayKey = sdf.format(new Date(dp.getTimestampMillis())); float value = (float) dp.getValue(); if (!dailyStats.containsKey(dayKey)) { dailyStats.put(dayKey, new DailyStats(value, value, value, 1)); } else { DailyStats stats = dailyStats.get(dayKey); stats.min = Math.min(stats.min, value); stats.max = Math.max(stats.max, value); stats.sum += value; stats.count++; } } // 填充完整日期范围(与XqhSjhzActivity相同的逻辑) Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); cal.set(Integer.parseInt(selectedYear), Calendar.JANUARY, 1, 0, 0, 0); long startMillis = cal.getTimeInMillis(); cal.set(Integer.parseInt(selectedYear), Calendar.DECEMBER, 31, 23, 59, 59); long endMillis = cal.getTimeInMillis(); while (cal.getTimeInMillis() >= startMillis) { String dayKey = sdf.format(cal.getTime()); if (!dailyStats.containsKey(dayKey)) { dailyStats.put(dayKey, new DailyStats(Float.NaN, Float.NaN, 0, 0)); } cal.add(Calendar.DATE, -1); // 逆向填充确保完整 } // 创建平均值数据集(与XqhSjhzActivity相同的计算方式) List<Entry> avgEntries = new ArrayList<>(); for (Map.Entry<String, DailyStats> entry : dailyStats.entrySet()) { try { Date date = sdf.parse(entry.getKey()); float avg = entry.getValue().getAverage(); if (!Float.isNaN(avg)) { avgEntries.add(new Entry(date.getTime(), avg)); } } catch (ParseException e) { e.printStackTrace(); } } // 按时间排序 Collections.sort(avgEntries, (e1, e2) -> Float.compare(e1.getX(), e2.getX())); if (avgEntries.isEmpty()) { showError("无有效数据"); return; } // 创建数据集 LineDataSet dataSet = new LineDataSet(avgEntries, selectedProperty + "日均值"); dataSet.setColor(Color.BLUE); dataSet.setLineWidth(2f); dataSet.setCircleColor(Color.RED); dataSet.setCircleRadius(3f); dataSet.setValueTextSize(10f); dataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER); LineData lineData = new LineData(dataSet); chart.setData(lineData); // 配置X轴 XAxis xAxis = chart.getXAxis(); xAxis.setValueFormatter(new DateAxisValueFormatter()); xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); xAxis.setGranularity(86400000); // 1天间隔 xAxis.setLabelCount(12, true); xAxis.setAxisMinimum(startMillis); xAxis.setAxisMaximum(endMillis); // 配置Y轴 YAxis leftAxis = chart.getAxisLeft(); leftAxis.setAxisMinimum(0f); leftAxis.setGranularity(1f); chart.getAxisRight().setEnabled(false); // 添加MarkerView CustomMarkerView markerView = new CustomMarkerView(this, R.layout.custom_marker_view); chart.setMarker(markerView); chart.invalidate(); } // 添加数据统计模型 private static class DailyStats { float min; float max; float sum; int count; DailyStats(float min, float max, float sum, int count) { this.min = min; this.max = max; this.sum = sum; this.count = count; } float getAverage() { return count == 0 ? Float.NaN : sum / count; } } // 添加自定义MarkerView private class CustomMarkerView extends MarkerView { private final TextView tvDate; private final TextView tvValue; private final SimpleDateFormat dateFormat; public CustomMarkerView(Context context, int layoutResource) { super(context, layoutResource); tvDate = (TextView) findViewById(R.id.tvDate); tvValue = (TextView) findViewById(R.id.tvValue); dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); } @Override public void refreshContent(Entry e, Highlight highlight) { long timestamp = (long) e.getX(); String unit = getUnitByProperty(selectedProperty); tvDate.setText(dateFormat.format(new Date(timestamp))); tvValue.setText(String.format(Locale.getDefault(), "%.1f%s", e.getY(), unit)); super.refreshContent(e, highlight); } @Override public MPPointF getOffset() { return new MPPointF(-(getWidth() / 2), -getHeight()); } } // 添加单位获取方法 private String getUnitByProperty(String property) { Map<String, String> unitMap = new HashMap<>(); unitMap.put("空气温度", "℃"); unitMap.put("空气相对湿度", "%"); unitMap.put("降雨量", "mm"); unitMap.put("蒸发量", "mm"); unitMap.put("风速", "m/s"); unitMap.put("风向", "°"); unitMap.put("露点温度", "℃"); unitMap.put("光照度", "Klx"); unitMap.put("日照强度", "W/m?"); unitMap.put("气压", "hPa"); unitMap.put("光合有效辐射", "W"); unitMap.put("土壤温度10cm", "℃"); unitMap.put("土壤温度20cm", "℃"); unitMap.put("土壤温度30cm", "℃"); unitMap.put("土壤含水量10cm", "%"); unitMap.put("土壤含水量20cm", "%"); unitMap.put("土壤含水量30cm", "%"); return unitMap.getOrDefault(property, ""); } private List<Entry> getEntries(List<DataPoint> dataPoints) { List<Entry> entries = new ArrayList<>(); for (DataPoint dp : dataPoints) { entries.add(new Entry(dp.getTimestampMillis(), (float) dp.getValue())); } return entries; } private class DateAxisValueFormatter implements IAxisValueFormatter { private final SimpleDateFormat mFormat; public DateAxisValueFormatter() { mFormat = new SimpleDateFormat("MM-dd", Locale.getDefault()); mFormat.setTimeZone(TimeZone.getTimeZone("UTC")); // 确保格式化使用UTC } @Override public String getFormattedValue(float value, AxisBase axis) { return mFormat.format(new Date((long) value)); } } public class DataPoint { private long timestampMillis; private double value; public void setTimestampMillis(long timestampMillis) { this.timestampMillis = timestampMillis; } public void setValue(double value) { this.value = value; } public long getTimestampMillis() { return timestampMillis; } public double getValue() { return value; } } private void showError(String message) { runOnUiThread(() -> Toast.makeText(this, message, Toast.LENGTH_SHORT).show()); } private void showDateRangePicker1() { AlertDialog.Builder builder = new AlertDialog.Builder(this); View dialogView = getLayoutInflater().inflate(R.layout.custom_date_picker, null); // 初始化开始日期控件 NumberPicker startYearPicker = (NumberPicker) dialogView.findViewById(R.id.np_start_year); NumberPicker startMonthPicker = (NumberPicker) dialogView.findViewById(R.id.np_start_month); NumberPicker startDayPicker = (NumberPicker) dialogView.findViewById(R.id.np_start_day); // 初始化结束日期控件 NumberPicker endYearPicker = (NumberPicker) dialogView.findViewById(R.id.np_end_year); NumberPicker endMonthPicker = (NumberPicker) dialogView.findViewById(R.id.np_end_month); NumberPicker endDayPicker = (NumberPicker) dialogView.findViewById(R.id.np_end_day); // 设置当前日期 Calendar calendar = Calendar.getInstance(); int currentYear = calendar.get(Calendar.YEAR); int currentMonth = calendar.get(Calendar.MONTH) + 1; // 转换为1-based int currentDay = calendar.get(Calendar.DAY_OF_MONTH); // 配置开始日期选择器 configureDatePickers(startYearPicker, startMonthPicker, startDayPicker, currentYear, currentMonth, currentDay); // 配置结束日期选择器 configureDatePickers(endYearPicker, endMonthPicker, endDayPicker, currentYear, currentMonth, currentDay); // 设置日期动态调整监听器 setupListeners(startYearPicker, startMonthPicker, startDayPicker); setupListeners(endYearPicker, endMonthPicker, endDayPicker); builder.setView(dialogView) .setPositiveButton("确定", (dialog, which) -> { // 获取并验证日期 String startDate = getFormattedDate(startYearPicker, startMonthPicker, startDayPicker); String endDate = getFormattedDate(endYearPicker, endMonthPicker, endDayPicker); if (!validateDateRange(startDate, endDate)) { Toast.makeText(this, "结束日期不能早于开始日期", Toast.LENGTH_SHORT).show(); return; } // 跳转至XqhydcxActivity Intent intent = new Intent(this, XqhydcxActivity.class); intent.putExtra("stationId", currentStationId); intent.putExtra("stationName", nAme.getText().toString()); intent.putExtra("startDate", startDate); intent.putExtra("endDate", endDate); startActivity(intent); }) .setNegativeButton("取消", (dialog, which) -> dialog.dismiss()) .create() .show(); } // 辅助方法:配置日期选择器初始值 private void configureDatePickers(NumberPicker yearPicker, NumberPicker monthPicker, NumberPicker dayPicker, int year, int month, int day) { yearPicker.setMinValue(2020); yearPicker.setMaxValue(2030); yearPicker.setValue(year); monthPicker.setMinValue(1); monthPicker.setMaxValue(12); monthPicker.setValue(month); Calendar cal = Calendar.getInstance(); cal.set(year, month - 1, 1); dayPicker.setMinValue(1); dayPicker.setMaxValue(cal.getActualMaximum(Calendar.DAY_OF_MONTH)); dayPicker.setValue(day); } // 辅助方法:设置年、月变化监听器 private void setupListeners(NumberPicker yearPicker, NumberPicker monthPicker, NumberPicker dayPicker) { yearPicker.setOnValueChangedListener((picker, oldVal, newVal) -> updateDayPicker(monthPicker.getValue(), newVal, dayPicker)); monthPicker.setOnValueChangedListener((picker, oldVal, newVal) -> updateDayPicker(newVal, yearPicker.getValue(), dayPicker)); } // 辅助方法:动态调整日期的最大值 private void updateDayPicker(int month, int year, NumberPicker dayPicker) { Calendar cal = Calendar.getInstance(); cal.set(year, month - 1, 1); int maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); dayPicker.setMaxValue(maxDay); if (dayPicker.getValue() > maxDay) { dayPicker.setValue(maxDay); } } // 辅助方法:格式化日期 private String getFormattedDate(NumberPicker year, NumberPicker month, NumberPicker day) { return String.format("%04d-%02d-%02d", year.getValue(), month.getValue(), day.getValue()); } // 辅助方法:验证日期范围 private boolean validateDateRange(String startDateStr, String endDateStr) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); try { Date startDate = sdf.parse(startDateStr); Date endDate = sdf.parse(endDateStr); return !endDate.before(startDate); } catch (ParseException e) { e.printStackTrace(); return false; } } private String getApiProperty(String chineseProperty) { // 建立中文属性名与英文字段名的映射 Map<String, String> propertyMap = new HashMap<>(); propertyMap.put("空气温度", "Etemperature"); propertyMap.put("空气相对湿度", "Ehumidity"); propertyMap.put("降雨量", "RainAdd"); propertyMap.put("蒸发量", "evaporation_capacity"); propertyMap.put("风速", "WindSpeed"); propertyMap.put("风向", "WindDirection"); propertyMap.put("露点温度", "dewPoint"); propertyMap.put("光照度", "illuminance"); propertyMap.put("日照强度", "SimpleRadiation"); propertyMap.put("气压", "AirPressure"); propertyMap.put("光合有效辐射", "PhotoRadiation"); propertyMap.put("土壤温度10cm", "SoilTemp1"); propertyMap.put("土壤温度20cm", "SoilTemp2"); propertyMap.put("土壤温度30cm", "SoilTemp3"); propertyMap.put("土壤含水量10cm", "SoilHum1"); propertyMap.put("土壤含水量20cm", "SoilHum2"); propertyMap.put("土壤含水量30cm", "SoilHum3"); String apiField = propertyMap.getOrDefault(chineseProperty, ""); // Log.d("PropertyMapping", "中文属性: " + chineseProperty + " → 英文字段: " + apiField); return apiField; } } apply plugin: 'com.android.application' android { useLibrary 'org.apache.http.legacy' compileOptions { encoding "GBK" } compileSdkVersion 24 buildToolsVersion "24.0.0" aaptOptions.cruncherEnabled = false aaptOptions.useNewCruncher = false defaultConfig { applicationId "com.jd.projects.wulianwang" multiDexEnabled true minSdkVersion 16 targetSdkVersion 24 versionCode 9 versionName "1.0.0.8" ndk { abiFilters 'armeabi' } } lintOptions { checkReleaseBuilds false // Or, if you prefer, you can continue to check for errors in release builds, // but continue the build even when errors are found: abortOnError false } signingConfigs { release { storeFile file('wulianwang.jks') storePassword '666666' keyAlias 'wulianwang' keyPassword '666666' } } buildTypes { release { minifyEnabled false signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' aaptOptions { ignoreAssetsPattern '!sdfg1.apk:!sdfg2.apk:!sdfg3.apk:!sdfg4.apk:' } } debug { minifyEnabled false signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } lintOptions { checkReleaseBuilds false abortOnError false } } dependencies { compile project(':mPAndroidChartLib') compile project(':mqttlibs') compile files('libs/1_6XDevSDK_1.29_beta.jar') compile files('libs/afinal_0.5.1_bin.jar') compile files('libs/AudioEngineSDK.jar') compile files('libs/BaiduLBS_Android.jar') compile files('libs/classes.jar') compile files('libs/glide-3.7.0.jar') compile files('libs/HCNetSDK.jar') compile files('libs/INetSDK.jar') compile files('libs/IPlaySDK.jar') compile files('libs/jpush-sdk-release1.7.5.jar') compile files('libs/jxl.jar') compile files('libs/ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar') compile files('libs/MCRSDK.jar') compile files('libs/PlayerSDK.jar') compile files('libs/ToUProxy.jar') compile files('libs/universal-image-loader-1.9.3.jar') compile files('libs/vmsnetsdk.jar') compile files('libs/volley.jar') compile files('libs/xUtils-2.6.14.jar') compile 'com.google.code.gson:gson:2.2.4' compile 'com.android.support:support-v4:22.4.0' compile 'com.android.support:appcompat-v7:22.1.1' compile 'com.google.android.gms:play-services-appindexing:8.4.0' compile files('libs/okhttp-2.7.5.jar') // compile files('libs/okio-1.6.0.jar') // implementation 'com.squareup.okhttp3:okhttp:4.9.1' implementation 'com.squareup.okhttp3:logging-interceptor:4.9.1' implementation 'com.squareup.retrofit2:retrofit:2.6.0' implementation 'com.squareup.retrofit2:converter-gson:2.6.0' implementation 'com.squareup.retrofit2:converter-scalars:2.4.0' //2025.5.27新添加 // implementation 'com.android.support:appcompat-v7:24.0.0' implementation 'com.android.support:gridlayout-v7:24.2.1' implementation 'com.android.support.constraint:constraint-layout:1.0.2' implementation 'com.android.support:recyclerview-v7:24.2.1' implementation 'org.apache.poi:poi:3.15' implementation 'org.apache.poi:poi-ooxml:3.15' implementation 'com.fasterxml:aalto-xml:1.0.0' implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3' } configurations.all { resolutionStrategy { eachDependency { details -> if (details.requested.group == 'androidx.annotation') { details.useTarget group: 'com.android.support', name: 'support-annotations', version: '24.2.1' } } } } 依据上述代码解决报错,如果要改变依赖只能改变//2025.5.27新添加 // implementation 'com.android.support:appcompat-v7:24.0.0' implementation 'com.android.support:gridlayout-v7:24.2.1' implementation 'com.android.support.constraint:constraint-layout:1.0.2' implementation 'com.android.support:recyclerview-v7:24.2.1' implementation 'org.apache.poi:poi:3.15' implementation 'org.apache.poi:poi-ooxml:3.15' implementation 'com.fasterxml:aalto-xml:1.0.0' implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3' } configurations.all { resolutionStrategy { eachDependency { details -> if (details.requested.group == 'androidx.annotation') { details.useTarget group: 'com.android.support', name: 'support-annotations', version: '24.2.1' } } } }这些依赖,其他以来不能变。D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:167: ����: �Ҳ������� chart.getDescription().setEnabled(false); ^ ����: ���� getDescription() λ��: ����ΪLineChart�ı��� chart D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:426: ����: �����ݵ�����: ��floatת����int���ܻ�����ʧ avgEntries.add(new Entry(date.getTime(), avg)); ^ D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:434: ����: �Ҳ������� Collections.sort(avgEntries, (e1, e2) -> Float.compare(e1.getX(), e2.getX())); ^ ����: ���� getX() λ��: ����ΪEntry�ı��� e1 D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:434: ����: �Ҳ������� Collections.sort(avgEntries, (e1, e2) -> Float.compare(e1.getX(), e2.getX())); ^ ����: ���� getX() λ��: ����ΪEntry�ı��� e2 D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:446: ����: �Ҳ������� dataSet.setCircleRadius(3f); ^ ����: ���� setCircleRadius(float) λ��: ����ΪLineDataSet�ı��� dataSet D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:448: ����: �Ҳ������� dataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER); ^ ����: ���� Mode λ��: �� LineDataSet D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:450: ����: ����LineData(LineDataSet), �Ҳ������ʵĹ����� LineData lineData = new LineData(dataSet); ^ ������ LineData.LineData(List<String>)������ (������ƥ��; LineDataSet�޷�ת��ΪList<String>) ������ LineData.LineData(String[])������ (������ƥ��; LineDataSet�޷�ת��ΪString[]) D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:455: ����: �Ҳ������� xAxis.setValueFormatter(new DateAxisValueFormatter()); ^ ����: ���� setValueFormatter(XqhtjfxActivity.DateAxisValueFormatter) λ��: ����ΪXAxis�ı��� xAxis D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:457: ����: �Ҳ������� xAxis.setGranularity(86400000); // 1���� ^ ����: ���� setGranularity(int) λ��: ����ΪXAxis�ı��� xAxis D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:458: ����: �Ҳ������� xAxis.setLabelCount(12, true); ^ ����: ���� setLabelCount(int,boolean) λ��: ����ΪXAxis�ı��� xAxis D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:459: ����: �Ҳ������� xAxis.setAxisMinimum(startMillis); ^ ����: ���� setAxisMinimum(long) λ��: ����ΪXAxis�ı��� xAxis D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:460: ����: �Ҳ������� xAxis.setAxisMaximum(endMillis); ^ ����: ���� setAxisMaximum(long) λ��: ����ΪXAxis�ı��� xAxis D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:464: ����: �Ҳ������� leftAxis.setAxisMinimum(0f); ^ ����: ���� setAxisMinimum(float) λ��: ����ΪYAxis�ı��� leftAxis D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:465: ����: �Ҳ������� leftAxis.setGranularity(1f); ^ ����: ���� setGranularity(float) λ��: ����ΪYAxis�ı��� leftAxis D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:470: ����: �Ҳ������� chart.setMarker(markerView); ^ ����: ���� setMarker(XqhtjfxActivity.CustomMarkerView) λ��: ����ΪLineChart�ı��� chart D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:494: ����: XqhtjfxActivity.CustomMarkerView���dz����, ����δ����MarkerView�еij��󷽷�getYOffset() private class CustomMarkerView extends MarkerView { ^ D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:508: ����: �Ҳ������� long timestamp = (long) e.getX(); ^ ����: ���� getX() λ��: ����ΪEntry�ı��� e D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:511: ����: �Ҳ������� tvValue.setText(String.format(Locale.getDefault(), "%.1f%s", e.getY(), unit)); ^ ����: ���� getY() λ��: ����ΪEntry�ı��� e D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:512: ����: �޷�ֱ�ӷ���MarkerView�еij��󷽷� refreshContent(Entry,Highlight) super.refreshContent(e, highlight); ^ D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:515: ����: �������Ḳ�ǻ�ʵ�ֳ����͵ķ��� @Override ^ D:\biancheng\jd_jdwlw-master\android_Jdwlw\src\main\java\com\jd\projects\wlw\weatherinfo\XqhtjfxActivity.java:547: ����: �����ݵ�����: ��floatת����int���ܻ�����ʧ entries.add(new Entry(dp.getTimestampMillis(), (float) dp.getValue())); ^
05-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值