以下のコード文字列は、数字が空白で区切られたメソッドで渡されます。 これで、文字列中の最小の2つの数字の合計を提供する必要があります。どうすればこのJavaコードを最適化できますか?
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のコードと比較してください。彼がコードをインデントしている様子を見てください。彼が正しい識別子スタイルをどのように使用しているか、一貫した空白、一貫性のある改行などについて教えてください。エリオットのコードスタイルをコピーしてください! –