如果您对android/java中的校验和计算和java校验器感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解android/java中的校验和计算的各种细节,并对java校验器进行深入的分析,
如果您对android / java中的校验和计算和java校验器感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解android / java中的校验和计算的各种细节,并对java校验器进行深入的分析,此外还有关于Android / Java中的JSON数组迭代、android 4.0中的java.lang.StackOverflowError,而不是android 3.0中的、android eclipse中的Android直接運行java main方法、android java中的排序列表的实用技巧。
本文目录一览:- android / java中的校验和计算(java校验器)
- Android / Java中的JSON数组迭代
- android 4.0中的java.lang.StackOverflowError,而不是android 3.0中的
- android eclipse中的Android直接運行java main方法
- android java中的排序列表
android / java中的校验和计算(java校验器)
void CalculateCheckSum( byte[] bytes ){ short CheckSum = 0,i = 0; for( i = 0; i < bytes.length; i++ ){ CheckSum = (short) ((short)CheckSum + (short)bytes[i]); } Log.i("Checksum",Integer.toHexString(CheckSum)); }
计算校验和的输入值为0xEF,0x01,0xEF,0x33,0x0C,0xB8,0xE5,0xFC,0x34,0xFF,0xFF.我手动计算校验和值,结果为0xCE4.当使用上面的函数时,我的答案为0xFFFFFFE4.在我的计算中是否有任何错误,如果是,那么请纠正我.
谢谢
解决方法
The value of a byte is ranged between
2^(-7)
and(2^7)-1
(-128 to 127).
但是你的值0xEF(十进制239)已经达到了一个字节的极限.这就是导致总和给出错误数字的原因.
Android / Java中的JSON数组迭代
我正在构建一个需要下载并与在线数据库同步的android应用,我将查询从该应用发送到php页面,该页面以JSON格式返回数据库中的相关行。
有人可以告诉我迭代JSON数组的最佳方法吗?
我收到一个对象数组:
[{json object},{json object},{json object}]
我可以用来访问数组中的JSONObjects的最简单的代码是什么?
编辑:现在,我想到它,我用来迭代循环的方法是:
for (String row: json){ id = row.getInt("id"); name = row.getString("name"); password = row.getString("password");}
所以我想我已经能够以某种方式将返回的Json变成可迭代的数组。有什么想法可以实现吗?
我为自己的冒昧表示歉意,但我通过网上发现的一个示例进行了此操作,此后一直无法找到它。
答案1
小编典典我已经用两种不同的方式做到了
1.)制作地图
HashMap<String, String> applicationSettings = new HashMap<String,String>(); for(int i=0; i<settings.length(); i++){ String value = settings.getJSONObject(i).getString("value"); String name = settings.getJSONObject(i).getString("name"); applicationSettings.put(name, value); }
2.)制作一个名称的JSONArray
JSONArray names = json.names(); JSONArray values = json.toJSONArray(names); for(int i=0; i<values.length(); i++){ if (names.getString(i).equals("description")){ setDescription(values.getString(i)); } else if (names.getString(i).equals("expiryDate")){ String dateString = values.getString(i); setExpiryDate(stringToDateHelper(dateString)); } else if (names.getString(i).equals("id")){ setId(values.getLong(i)); } else if (names.getString(i).equals("offerCode")){ setOfferCode(values.getString(i)); } else if (names.getString(i).equals("startDate")){ String dateString = values.getString(i); setStartDate(stringToDateHelper(dateString)); } else if (names.getString(i).equals("title")){ setTitle(values.getString(i)); } }
android 4.0中的java.lang.StackOverflowError,而不是android 3.0中的
01-31 12:52:53.020: E/AndroidRuntime(10957): FATAL EXCEPTION: main
01-31 12:52:53.020: E/AndroidRuntime(10957): java.lang.StackOverflowError
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.graphics.Paint.getTextRunAdvances(Paint.java:1711)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.text.TextLine.handleText(TextLine.java:749)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.text.TextLine.handleRun(TextLine.java:972)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.text.TextLine.measureRun(TextLine.java:416)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.text.TextLine.measure(TextLine.java:295)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.text.TextLine.metrics(TextLine.java:269)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.text.Layout.getLineExtent(Layout.java:942)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.text.Layout.draw(Layout.java:405)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.text.BoringLayout.draw(BoringLayout.java:400)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.widget.TextView.onDraw(TextView.java:5038)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.View.draw(View.java:10978)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2887)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.widget.AbsListView.dispatchDraw(AbsListView.java:2092)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.View.draw(View.java:11083)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.widget.AbsListView.draw(AbsListView.java:3398)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2887)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.View.draw(View.java:11083)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.widget.FrameLayout.draw(FrameLayout.java:450)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.widget.ScrollView.draw(ScrollView.java:1524)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2887)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.View.draw(View.java:10981)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2887)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.View.draw(View.java:10981)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.widget.FrameLayout.draw(FrameLayout.java:450)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2887)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.View.draw(View.java:10981)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(ViewGroup.java:2887)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
01-31 12:52:53.020: E/AndroidRuntime(10957): at android.view.ViewGroup.drawChild(Vi
解决方法:
此堆栈与您拥有太多嵌套布局时获得的堆栈非常相似.我会运行layoutopt,看看你是否可以减少你的布局层次结构,看它是否修复它,对于Framework差异,我不能说它们是否减少了这个限制,或者是否更新的控件增加了它们的内部层次结构布局,这些都超出了限制.很难说…
https://developer.android.com/studio/tools/help/layoutopt.html
android eclipse中的Android直接運行java main方法
android java中的排序列表
如何解决android java中的排序列表?
我一直在尝试对 android 中的方法列表进行排序,但到目前为止还无法完成。这是实现
public List<Items> getItems(@NotNull Context context){
List<Items> tempList = new ArrayList<>();
Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
String [] projection = {
MediaStore.Video.Media._ID,MediaStore.Video.Media.DATA,MediaStore.Video.Media.TITLE,};
Cursor cursor = context.getContentResolver().query(uri,projection,null,null);
if (cursor != null){
while (cursor.movetoNext()){
String id = cursor.getString(0);
String path = cursor.getString(1);
String title = cursor.getString(2);
Items items= new Items(id,path,title);
tempVideos.add(items);
}
cursor.close();
}
return tempVideos;
我正在尝试按标题对这个方法返回的列表进行排序,方法如下,但它没有按要求的顺序排序。
List<Items> a = new ArrayList(Collections.singletonList(getItems(getActivity())));
Collections.sort(a,new Comparator<Items>() {
@Override
public int compare(Items o1,Items o2) {
if (o1 == null) return -1;
else if (o2 == null) return 1;
int cmp = String.CASE_INSENSITIVE_ORDER.compare(o1.getTitle(),o2.getTitle());
if (cmp != 0) return cmp;
return o1.getTitle().toLowerCase().compareto(o2.getTitle().toLowerCase());
}
});
解决方法
比较期望不明确。
下面的代码对char与char进行比较,直到它们的长度相同,如果超过则返回other。
请注意:代码忽略大小写。如我所见,您需要忽略此案例。
public static void main(String[] args) {
TestCheck t = new TestCheck();
List<Item> itemList = t.generateList();
Comparator<Item> itemComparator = (o1,o2) -> {
if(o1 == null) return -1;
else if(o2 == null) return 1;
char[] o1Item = o1.getTitle().toLowerCase().toCharArray();
char[] o2Item = o2.getTitle().toLowerCase().toCharArray();
int minLen = Math.min(o1Item.length,o2Item.length);
for(int value = 0; value < minLen; value++) {
int diff = o1Item[value] - o2Item[value];
if(diff != 0) return diff;
}
if(o1Item.length == minLen) return 1;
else return 0;
};
itemList.sort(itemComparator);
itemList.forEach(System.out::println);
}
private List<Item> generateList() {
List<Item> itemList = new LinkedList<>();
IntStream.range(1,10).forEach(value -> {
itemList.add(new Item(value + "","path","title" + value));
});
itemList.add(new Item("13","winWIN"));
itemList.add(new Item("14","XNInwd"));
itemList.add(new Item("15","LWNDN"));
itemList.add(new Item("16","ziubnd"));
itemList.add(new Item("48","32bjsjdbf"));
itemList.add(new Item("48","12bjsjdbf"));
return itemList;
}
输出:
Item{id=''48'',path=''path'',item=''12bjsjdbf''}
Item{id=''48'',item=''32bjsjdbf''}
Item{id=''15'',item=''LWNDN''}
Item{id=''1'',item=''title1''}
Item{id=''2'',item=''title2''}
Item{id=''3'',item=''title3''}
Item{id=''4'',item=''title4''}
Item{id=''5'',item=''title5''}
Item{id=''6'',item=''title6''}
Item{id=''7'',item=''title7''}
Item{id=''8'',item=''title8''}
Item{id=''9'',item=''title9''}
Item{id=''13'',item=''winWIN''}
Item{id=''14'',item=''XNInwd''}
Item{id=''16'',item=''ziubnd''}
今天关于android / java中的校验和计算和java校验器的分享就到这里,希望大家有所收获,若想了解更多关于Android / Java中的JSON数组迭代、android 4.0中的java.lang.StackOverflowError,而不是android 3.0中的、android eclipse中的Android直接運行java main方法、android java中的排序列表等相关知识,可以在本站进行查询。
本文标签: