java字符串数组排序_在Java中对字符串数组进行排序

允许用户使用字符串数组.他们可以向数组添加字符串,从数组中删除字符串,搜索数组中的字符串,最终他们将能够对数组进行排序.分类是搞砸我的原因.我尝试过几种不同的方法.第一种方法是将数组转换为ArrayList,并使用Collections对ArrayList进行排序,ArrayList将转换回静态类数组.它不起作用.我尝试的第二种方法是迭代数组并尝试仅排序用户添加的字符串而不是数组中的所有内容(因为数组中有一些空值).也许我应该遍历数组,然后将非null值存储到一个新的数组中,然后我可以对它进行排序?但是如果我想在排序新数组后添加更多字符串呢?这就是为什么我停止了第二个解决方案.第三次尝试是在我的数组上使用Arrays.sort()但由于某种原因它不起作用.

这是一个例外:

Exception in thread "main" java.lang.NullPointerException

at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:290)

at java.util.ComparableTimSort.sort(ComparableTimSort.java:157)

at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)

at java.util.Arrays.sort(Arrays.java:472)

at java.util.Collections.sort(Collections.java:155)

at testingSearch.sortArray(testingSearch.java:93)

at testingSearch.main(testingSearch.java:42)

这是我的代码:

import java.util.Scanner;

import java.util.Arrays;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

public class testingSearch {

static String[] strArray;

static {

strArray = new String[5];

}

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

while(true){

System.out.println("1. Add string to the string array.");

System.out.println("2. Remove string from the string array.");

System.out.println("3. Display strings in string array.");

System.out.println("4. Search the string array for a string.");

System.out.println("5. Sort the strings in the string array.");

int userChoice = 0;

userChoice = input.nextInt();

switch(userChoice) {

case 1:

addString();

break;

case 2:

removeString();

break;

case 3:

displayStrings();

break;

case 4:

searchArray();

break;

case 5:

sortArray();

break;

}

}

}

public static void addString(){

Scanner input = new Scanner(System.in);

System.out.println("What string do you want to add?");

String userInput;

userInput = input.nextLine();

ArrayList stringList = new ArrayList (Arrays.asList(strArray));

stringList.add(userInput);

strArray = stringList.toArray(strArray);

}

public static void removeString(){

Scanner input = new Scanner(System.in);

System.out.println("What string do you want to remove?");

String userInput;

userInput = input.nextLine();

ArrayList stringList = new ArrayList (Arrays.asList(strArray));

stringList.remove(userInput);

strArray = stringList.toArray(strArray);

}

public static void displayStrings(){

for (String s: strArray){

if (!(s == null)){

System.out.println(s);

}

}

}

public static void searchArray(){

Scanner input = new Scanner(System.in);

System.out.println("What string do you want to search the array for?");

String userInput;

userInput = input.nextLine();

ArrayList stringList = new ArrayList(Arrays.asList(strArray));

if (stringList.contains(userInput)){

System.out.println("The string array contains that string!");

}

else {

System.out.println("The string array does not contain that string...");

}

}

public static void sortArray(){

/*ArrayList stringList = new ArrayList (Arrays.asList(strArray));

Collections.sort(stringList);

strArray = stringList.toArray(strArray);*/

/*for (String s: strArray) {

if (!(s == null)){

Arrays.sort(strArray);

}

}*/

List stringList = new ArrayList(Arrays.asList(strArray));

Collections.sort(stringList);

strArray = stringList.toArray(strArray);

//Arrays.sort(strArray);

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是本体论?

来源:人机与认知实验室【世界有无本体还是互为本体?这是两个非常有意思的问题,从牛顿绝对主义角度应该有,从爱翁相对主义应该无,从未来的发展看,应该是“变”——也许就是“易”?!主…

关于激活Windows10专业版2018长期服务版

之前重装了一次系统,偷懒用了小白一键重装,装好之后显示的是Windows10专业版2018长期服务版,当时也没想太多就放着用了。 然后 ,这几天一直提示 “你的windows许可证即将过期” ,就按照网上的一些教程来但是一直出错&…

php java 通信_PHP与Java进行通信的实现方法

缘起:最近做了一个电商平台与网银整合的小东西,程序是开源的 Ecmall的,网银的接口也很规范,给出的文档很全,唯一的小问题是,网银使用的签名和验签的lib是只有java和c的,对java还熟悉一些&#x…

Leetcode--397. 整数替换

给定一个正整数 n,你可以做如下操作: 1. 如果 n 是偶数,则用 n / 2替换 n。 2. 如果 n 是奇数,则可以用 n 1或n - 1替换 n。 n 变为 1 所需的最小替换次数是多少? 示例 1: 输入: 8 输出: 3 解释: 8 -> 4 ->…

亚马逊首席技术官预测2021年将改变世界的八大技术趋势

来源:世界科技研究与发展2020年12月17日,亚马逊全球副总裁、首席技术官维尔纳•沃格尔(Werner Vogels)博士在亚马逊re:Invent全球大会上发表压轴演讲,分享了他对2021年科技趋势的预测。回顾2020年,Werner表…

Leetcode--268. 缺失数字

给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: [9,6,4,2,3,5,7,0,1] 输出: 8 说明: 你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现? 方法一&#xf…

lingo逻辑运算符

LINGO 具有9种逻辑运算符:#not# 否定该操作数的逻辑值,#not#是一个一元运算符#eq# 若两个运算数相等,则为true;否则为flase#ne# 若两个运算符不相等,则为true;否则为flase#gt# 若左边…

《城市大脑全球标准研究报告2020》摘要内容

‍‍前言:《城市大脑全球标准研究报告2020》12月23在京正式发布,有近70位专家、领导和媒体记者出席了发布会,会后包括新华社、工人日报、中新社、科技日报、中国科学报、中国社会科学报、中国建设报、经济日报、中国经营报、经济观察报&#…

EasyExcel中处理内容占多个单元格

在一些业务需求中内容需要占用多个单元格的情况,如下图: 或者是这样 这样 总有一些奇怪怪的需求。 不过使用EasyExcel可以轻松处理这些变态的需求。EasyExcel中提供了ContentLoopMerge 注解就是为了处理这种问题的。下面先看看如何使用ContentLoopMe…

java处理unicode_C# JavaScript Java 与 中文 unicode 处理

C#// 将汉字转换为Unicode//要转换的字符串///public static string GBToUnicode(string text){byte[] bytes System.Text.Encoding.Unicode.GetBytes(text);string lowCode "", temp "";for (int i 0; i{if (i % 20){temp System.Convert.ToString(by…

Leetcode--260. 只出现一次的数字Ⅲ

给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。 示例 : 输入: [1,2,1,3,2,5] 输出: [3,5] 注意: 结果输出的顺序并不重要,对于上面的例子, [5, 3] 也…

洛谷P4559 [JSOI2018]列队 【70分二分 + 主席树】

题目链接 洛谷P4559 题解 只会做\(70\)分的\(O(nlog^2n)\) 如果本来就在区间内的人是不用动的,区间右边的人往区间最右的那些空位跑,区间左边的人往区间最左的那些空位跑 找到这些空位就用二分 主席树 理应可以在主席树上的区间二分而做到\(O(nlogn)\)&…

2021十大科技趋势来了!阿里巴巴达摩院全新发布

来源: 阿里技术阿里巴巴达摩院发布2021十大科技趋势,这是达摩院成立三年以来第三次发布年度科技趋势。2020年是不平凡的一年,经历疫情的洗礼,许多行业重启向上而生的螺旋,但疫情并未阻挡科技前进的脚步,量子…

Leetcode--342. 4的幂

给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。 示例 1: 输入: 16 输出: true 示例 2: 输入: 5 输出: false 进阶: 你能不使用循环或者递归来完成本题吗? 方法一: class Solution { public …

bzoj 1731: [Usaco2005 dec]Layout 排队布局【差分约束】

差分约束裸题&#xff0c;用了比较蠢的方法&#xff0c;先dfs_spfa判负环&#xff0c;再bfs_spfa跑最短路 注意到“奶牛排在队伍中的顺序和它们的编号是相同的”&#xff0c;所以\( d_i-d_{i-1}>0 \),连(i,i-1,0)&#xff1b;然后对于\( d_i-d_j<L \)&#xff0c;连(j,i,…

从GPT-3到DETR,一起来盘点2020有哪些突破?

来源&#xff1a;深度学习技术前沿2020年是巨大飞跃的一年。从OpenAI的GPT-3&#xff0c;再到AlphaFold&#xff0c;都是令人振奋的成就。与此同时&#xff0c;数据科学在机器学习、自然语言处理&#xff08;NLP&#xff09;、计算机视觉等领域中蓬勃发展。一起来逐一盘点2020的…

java script 技巧_java script 技巧

事件源对象event.srcElement.tagNameevent.srcElement.type捕获释放event.srcElement.setCapture();event.srcElement.releaseCapture();事件按键event.keyCodeevent.shiftKeyevent.altKeyevent.ctrlKey事件返回值event.returnValue鼠标位置event.xevent.y窗体活动元素document…

个人作业5——软工个人总结

一、请回望开学时的第一次作业&#xff0c;你对于软件工程课程的想象 对比开篇博客你对课程目标和期待&#xff0c;“希望通过实践锻炼&#xff0c;增强计算机专业的能力和就业竞争力”&#xff0c;对比目前的所学所练所得&#xff0c;在哪些方面达到了你的期待和目标&#xff…

我国5G基站达71.8万个,助力人工智能发展!

来源&#xff1a;新华社2020中国人工智能高峰论坛暨中国人工智能大赛成果发布会23日在厦门举办。论坛上&#xff0c;中国工业和信息化部副部长刘烈宏介绍&#xff0c;截至今年11月&#xff0c;我国累计建成5G基站71.8万个&#xff0c;为人工智能海量数据的成长和传输提供了坚实…

java如何对list进行排序_java中如何对list进行排序

java类中用Collections的sort方法对一个list进行排序&#xff0c;比较简单先建一个User对象public class User {public String name;public Integer age;public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public String getName() {retu…