gpt4 book ai didi

java - 我如何优化这个java代码?

转载 作者:行者123 更新时间:2023-12-01 21:25:27 25 4
gpt4 key购买 nike

在下面的代码中,字符串被传递到一个方法中,数字之间用空格分隔,现在我们需要提供字符串中最小的两个数字的总和。

public class SumNearZero {
public static int SumNearZero(String s) {
String temp=s;
int t1=0;
for (int i = 0; i <s.length(); i++) {

if(temp.contains(" "))
{
t1++;
temp=temp.substring(temp.indexOf(" ")+1);
}
}
int a[]=new int[++t1];
int index=0;
for(int i=0; i<s.length(); i++)
{
if(s.contains(" "))
{
a[index]=Integer.parseInt(s.substring(0,s.indexOf(" ")));
s=s.substring(s.indexOf(" ")+1);
index++;
}

}
a[index]=Integer.parseInt(s);

for (int i = 0; i < a.length; i++) {

for(int j=0; j<a.length-1; j++)
{
int c=a[j],n=a[j+1];
if(c>n)
{
int t=c;
a[j]=n;
a[j+1]=t;

} } }
int result=a.length>1 ? a[0]+a[1]:a[0];
return result;
}
public static void main(String[] args) {
System.out.println(SumNearZero("35 96 10 20 5"));
}
}

上面的代码工作正常,但我想减少代码。如果您对此提出一些建议,我很乐意向您学习。

限制:使用集合、预定义方法,例如(String.split()、Arrays.sort()...)

最佳答案

我建议您不要在构造函数中执行计算和显示,而是创建一个静态方法并调用它。接下来,在该方法中,通过迭代将输入拆分为一个(或多个)空白字符生成的子字符串,创建一个 IntegerList。然后,对列表进行排序。最后,返回前两个元素的和1。对一个数字(或没有数字)进行一些错误检查也是一种很好的做法。这可能看起来像

public static int sumNearZero(String s) {
List<Integer> al = new ArrayList<>();
for (String str : s.split("\\s+")) {
al.add(Integer.parseInt(str));
}
if (al.isEmpty()) {
return 0;
}
Collections.sort(al);
if (al.size() == 1) {
return al.get(0);
}
return (al.get(0) + al.get(1));
}

然后像这样调用它

public static void main(String[] args) {
System.out.println(sumNearZero("35 96 10 20 5"));
}

我得到了(如我所料)

15

1排序后,前两个是最小值,后两个是最大值

关于java - 我如何优化这个java代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38278103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com