String stringBuffer = new StringBuffer().append(this.this$0.stringFromJNI()).append("2c9e").toString(); String editable = this.mEditText.getText().toString(); if (stringBuffer == null || !stringBuffer.equals(MD5Utils.getMD5(MD5Utils.getMD5(editable)).substring(MD5Utils.getMD5(MD5Utils.getMD5(editable)).length() - 8))) { this.mEditText.setHint("密码错误"); } else { System.exit(0); }这段代码是什么意思
时间: 2024-04-26 09:20:16 浏览: 72
这段代码是一个 Android 应用程序中的密码验证逻辑。它将从一个名为 `stringFromJNI()` 的本地方法中获取字符串,并将其与字符串 "2c9e" 进行拼接,然后使用 MD5 算法对用户输入的密码进行双重加密。如果加密后的密码与拼接后的字符串的最后8个字符相等,则程序会退出。否则,将在 `EditText` 中显示 "密码错误"。
相关问题
for (Map<String, Object> map : dataList) { String lx = map.get("lx").toString(); double syts = 0.0; for (Map<String, Object> maps2 : dataList) { int i = DateUtil.compareDate(map.get("cjsj").toString(),maps2.get("cjsj").toString()); double qjts =0.0; if (StringUtils.equals(lx, "1") && i>=0) { String qjkssj = map.get("qjkssj").toString(); String qjjssj = map.get("qjjssj").toString(); String startTime = map.get("start_date").toString(); String endTime = map.get("end_date").toString(); StringBuffer stringBuffer = new StringBuffer(); StringBuffer append = stringBuffer.append(qjkssj).append(" ").append(startTime); StringBuffer stringBuffer1 = new StringBuffer(); StringBuffer append1 = stringBuffer1.append(qjjssj).append(" ").append(endTime); map.put("startTime", append); map.put("endTime", append1); map.put("jsts",map.get("qjts")); map.put("zjts",0); // qjts = Double.parseDouble("-"+(String) maps2.get("qjts")); qjts = Double.parseDouble("-" + maps2.get("qjts")); } else { map.put("jsts",0); map.put("zjts",map.get("qjts")); qjts = Double.parseDouble((String) maps2.get("qjts")); } syts +=qjts; } map.put("syts",syts);为什么syts 计算的不是负数
根据代码中的逻辑,syts是一个累加值,它在每次循环中都会加上qjts。在if语句块中,当lx等于1且i大于等于0时,qjts等于负数,因为代码中有"-"+,这是把负数转换成字符串的写法,所以syts会累加上负数。在else语句块中,qjts等于正数,因此syts会累加上正数。因此,syts计算的结果取决于qjts的正负性,而不是固定的正数或负数。
public class Course implements Serializable { private static final long serialiVersionUID=1L; //私有属性 private int courseId;//课程编号 private String courseName;//课程名称 private String courseType;//课程类别 private int courseCount;//课程总数 private String duration;//时长 private String teacherName;//讲师昵称 public int getCourseId() { return courseId; } public void setCourseId(int courseId) { this.courseId = courseId; } public String getCourseName() { return courseName; } public void setCourseName(String courseName) { this.courseName = courseName; } public String getCourseType() { return courseType; } public void setCourseType(String courseType) { this.courseType = courseType; } public int getCourseCount() { return courseCount; } public void setCourseCount(int courseCount) { this.courseCount = courseCount; } public String getDuration() { return duration; } public void setDuration(String duration) { this.duration = duration; } public String getTeacherName() { return teacherName; } public void setTeacherName(String teacherName) { this.teacherName = teacherName; } public Course(int courseId, String courseName, String courseType, int courseCount, String duration, String teacherName) { this.courseId = courseId; this.courseName = courseName; this.courseType = courseType; this.courseCount = courseCount; this.duration = duration; this.teacherName = teacherName; } public Course() { } @Override public String toString() { StringBuffer sb=new StringBuffer(); sb.append(this.courseId); sb.append("\t"); sb.append(this.courseName); sb.append("\t"); sb.append(this.courseType); sb.append("\t\t"); sb.append(this.courseCount); sb.append("\t"); sb.append(this.duration); sb.append("\t"); sb.append(this.teacherName); return sb.toString(); } }toString的作用
toString方法的作用是将对象转换为字符串表示形式。在该代码中,Course类重写了toString方法,将对象的各个属性拼接成一个字符串,并返回该字符串。
具体来说,toString方法使用StringBuffer来构建字符串,依次添加课程编号、课程名称、课程类别、课程总数、时长和讲师昵称,并使用制表符分隔它们。最后,通过调用toString方法可以获取到一个包含所有属性值的字符串表示形式。
使用toString方法可以方便地查看对象的属性值,也可以在日志输出、调试等场景中使用。
阅读全文