2012-03-21 11 views
0

私はJavaでメソッドをプログラミングしています(最初にやっています)、コンパイル時に少しエラーが出ましたが、デバッグしてもどこが間違っているのか分かりません何百回も。最後に、私「メートルの助けをインターネットに回すReturnのステートメントがありません - int []

はここで問題と私のコードのセクションです:

public int[] sortArray(String [] args) { 
     String temp = ""; 
     for(int x = 0; x < args.length; x++){ 
      for(int y = 1; y < args.length - 1; y++){ 
      if(Integer.parseInt(args[y-1])>Integer.parseInt(args[y])){ 
       temp = args[y-1]; 
       args[y-1] = args[y]; 
       args[y] = temp; 
      } 
     } 
    } 
} 

私はコンパイルするたびに、それは誤り提供:私は置くとき見つからないreturn文 を」リターン0;は最後の '}'の前のコードには、間違った型の戻り値、つまり0がintでint型の戻り値が返されます。

+0

コンパイルしないと何百回もデバッグできますか? –

+1

これは ''宿題 'であると仮定します。そうでなければ 'Arrays.sort()'を使います。 –

答えて

4

整数配列ではなく、メソッドシグネチャの整数型または変更戻り型をvoidに設定します。

public void sortArray(String [] args) { 
    // ... 
} 
0

ソート方法の署名をvoidに変更してください。それ以外の場合は、メソッドの最後にソートされたint配列を返します。

あなたがソートされた文字列の配列を返すようにしたい場合は、以下のようにあなたの方法を変更します。

public String[] sortArray(String [] args) { 
    String temp = ""; 
    for(int x = 0; x < args.length; x++){ 
     for(int y = 1; y < args.length - 1; y++){ 
     if(Integer.parseInt(args[y-1])>Integer.parseInt(args[y])){ 
      temp = args[y-1]; 
      args[y-1] = args[y]; 
      args[y] = temp; 
     } 
    } 
    } 
    return args; 
} 
2

返すようにを意味方法は何ですか?あなたのメソッドは定位置に並んでいます - なぜ何も返す必要はありませんか?あなたはそれvoidメソッド行うことができます。

public void sortArray(String[] args) { 
    for (int x = 0; x < args.length; x++) { 
     for (int y = 1; y < args.length - 1; y++) { 
     if (Integer.parseInt(args[y-1]) > Integer.parseInt(args[y])) { 
      // Note change of declaration location: in general, declare 
      // variables with minimal scope 
      String temp = args[y - 1]; 
      args[y - 1] = args[y]; 
      args[y] = temp; 
     } 
    } 
} 

(あなたがここで不要な解析をたくさんやっていることに注意してください、そしてまた、あなたの内側のループでxの値を使用したことがない...ということは、意図的なのですか? )

0

関数にreturn文がありません!したがって、コンパイルエラーが...あなたが直接args[]に取り組んでいるようですので、何も(空の関数)を返しません

0

あなたはおそらくargsを返すかvoid

1
public String[] sortArray(String [] args) { 
      String temp = ""; 
      for(int x = 0; x < args.length; x++){ 
       for(int y = 1; y < args.length - 1; y++){ 
       if(Integer.parseInt(args[y-1])>Integer.parseInt(args[y])){ 
        temp = args[y-1]; 
        args[y-1] = args[y]; 
        args[y] = temp; 
       } 
      } 
     } 
      return args; 
    } 

にあなたの方法を変更したいですvoid型を使用する

0

javaパラメータには、C/C++の(char * args)のような参照が付いています。したがって、このセクションでは何も返す必要はありません。呼び出し側でargs配列を使用するだけです。

0

戻り値の型を返さない場合は、戻り値の型をvoidとして変更してください。あなたが何かを返す場合は、適切なデータ型を使用してください、あなたの場合は、int配列変数を返す必要があります。

関連する問題