【发布时间】:2016-07-09 03:49:30
【问题描述】:
在下面的代码中,字符串在方法中传递,数字用空格分隔, 现在我们需要提供字符串中最小的两个数字的总和。
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()...)
【问题讨论】:
-
代码可能正常工作,但风格很糟糕。 1)缩进很糟糕。 2) 违反标识符大写规则。 3) 无意义的变量名。 4)没有javadocs。 IMO,您应该在花时间尝试简化/优化代码之前解决这些问题。为什么?因为您要求其他人阅读您的代码……现在。
-
如果你有比上面更好的代码作为答案。
-
我会做得比这更好。将您的代码风格与 Elliott Frisch 的代码进行比较。看看他如何缩进他的代码?看看他如何使用正确的标识符样式以及如何一致的空格、一致的换行符等等?复制 Elliott 的代码风格!
-
用集合来实现上面的代码很容易,我问过没有使用集合,请看问题中的限制。
-
piyushisingh - 你没有抓住重点。请再次阅读我的cmets。我说你的代码风格很糟糕。你说我如何改进我的代码风格。我说阅读 Elliot Frisch 的代码以获得良好风格的示例。 Elliot 的代码不满足您的其他要求这一事实无关紧要。它>确实
标签: java optimization logic