GVKun编程网logo

android / java中的校验和计算(java校验器)

9

如果您对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中的校验和计算(java校验器)

我在 android / 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.在我的计算中是否有任何错误,如果是,那么请纠正我.

谢谢

解决方法

字节根据 Java Docs:

The value of a byte is ranged between 2^(-7) and (2^7)-1 (-128 to 127).

但是你的值0xEF(十进制239)已经达到了一个字节的极限.这就是导致总和给出错误数字的原因.

Android / Java中的JSON数组迭代

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中的

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 eclipse中的Android直接運行java main方法

       在Android项目中实现Socket通信,服务器端使用main方法创建ServerSocket,运行启动服务器时报错“Error: ShouldNotReachHere() ”。
原因分析:java中使用main函数作为应用程序的接口,class的生命周期始于main方法,终于main方法。Android虽然使用的是java语法,但是却不使用main作为程序入口,一个activity启动时要经过onCreate()方法、onStart()方法和onResume()方法才算完全启动,而且这些方法都是自动调用的,这是与java application运行的最大不同处。所以如果你新建的是Android Project,那么程序默认使用的就是android.jar来作为程序运行时环境,但是由于我们按照惯例将服务器端ServerSocket的启动放在main方法中,android无法解析,所以会报出“Error: ShouldNotReachHere() ”错误,就是说程序永远不会执行到这里,这种错误平时也常见,比如说你在定义了一条return语句后又在后面加上一句System.out.println("xxxx")一样,return表示程序已经结束,后面那句System是永远无法执行的,因为按照java语法程序无法被解析。
    解决方案一:隔离服务器端和客户端。将服务器端ServerSocket的创建移到Android项目之外的一个Java Project中,先运行这个Java Project,启动ServerSocket,再运行客户端所在的Android Project。
    解决方案二:更改服务器端运行时环境。将ServerSocket依旧写在Java类中的main方法中,在IDE左边的Package Exployer中选中项目,点击鼠标右键,选择“Run as——>Run configuration”,在弹出窗口的左边框内找到“Java application——>ServerSocket类”,在右边框内找到Classpath选项,找到其中的Bootstrap Entries,选中其中的android.jar,点击右边remove按钮将其删除,然后点击Advanced按钮,选择Add Libaby选项,点击ok按钮,在弹出的对话框中选择JRE System Library,点击“next”按钮,选择Workplace Default JRE选项,点击“finish”按钮即可完成配置。
    解决方案三:使用Android中的Activity创建服务器ServerSocket。这种方案应该将服务器和客户端都写在同一个Activity中的不同方法中,先启动服务器方法,再启动客户端方法。这是因为Android中一个Activity就代表了一个屏幕,如果你将服务器和客户端写在不同的Activity中,先启动服务器Activity,再跳转到客户端Activity,那么服务器Activity就会执行onPause()回调方法,相当于关闭Socket服务器了。
解决方案四:使用Android中的Service创建服务器ServerSocket。创建一个Service用来存放Socket服务器代码,再创建一个Activity来存放Socket客户端代码和显示通信信息。运行时先通过Activity启动Service,再启动客户端代码的Activity。由于Android中的Service是后台运行,所以即使跳转Activity也不会关闭服务。
    这四种方案中,第一种将服务器和客户端分隔在不同项目中,不利于管理;第三种方案将客户端和服务器代码写在同一个类中,显得杂乱而且不符合实际情况。个人觉得可取的是第二种和第四种方案,特别是第四种方案。第二种方案夹杂了Android和Java环境处理,第四种方案则是纯粹的Android应用,而且用到了Android中的Service,“Service——Activity”更符合Socket的“服务器——客户端”模式。
 
以上文章是從網絡上搜索出來的,本人已經測試了第二種方案,可以通過;
具體做法就是:
(1)右鍵 入口類(含有Main方法的)==>Run Configurations==>雙擊(Java Application)==>New==>
(2)在標籤Main里選好相應的ProjectName和要運行ClassName,
(3)選標籤ClassPath中的Bootstrap Entries ,再從右邊點 Advance==>Add Library==>JRE System Library,完成,然後將 JRE System Library 點中再點 Up按鈕,OK了

android java中的排序列表

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中的排序列表等相关知识,可以在本站进行查询。

本文标签: