2017-11-18 10 views
0

これは宿題です。ただそれをそこに置くつもりです。私は私がいたどのように多くの偶数番号、シーケンスの最大数、列の長さを表示しようとする必要がある、それは最初に私のコードを表示し、私はStringメソッド内でint変数を取得するJava

import java.util.Scanner; 
public class Question1 { 
public static void main(String[] args){ 
    int length, odd, even, largest; 
    int n = getNumber(); 
    length=odd=even=largest=initialize(); 
    String sequence=createSequence(n, largest, odd, even, length); 
    displaySequence(sequence); 
    displayStatistics(largest, length, odd, even); 
} 
private static int getNumber(){ 
    Scanner kb = new Scanner(System.in); 
    System.out.println("Enter the value of the number: "); 
    int number = kb.nextInt(); 
    return number; 
} 
private static int initialize(){ 
    return 0; 
} 
public static String createSequence(int n, int largest, int odd, int even, int length){ 
    String sequence=""; 
    sequence+=n+" "; 
    while (n!=1){ 
     n = (n%2==0) ? n/2 : 3*n+1; 
     System.out.print(", "+n); 
     sequence+=n+" "; 
     if(n%2==0){ even++; 
     }else{ odd++;} 
     if(n>=largest){ largest = n; 
     } 
     length++; 
    } 
    return sequence; 
} 
private static void displaySequence(String sequence){ 
    System.out.println(sequence); 
} 
public static String displayStatistics(int length, int even, int odd, int largest){ 
    String nil = ""; 
    System.out.println("The largest number in the sequence was "+largest); 
    System.out.println("The length of the sequence was "+length); 
    System.out.println("There were "+odd+" odd numbers"); 
    System.out.println("There were "+even+" even numbers"); 
    return nil; 
} 

} 

を行うにしようとしていますかを説明するのが最善であると感じシーケンス中にいくつの奇数があったかを示します。しかし、私はcreateSequenceメソッドでint値を返すことができないので、私は各統計値の新しい値を取得することはできません。私が前記統計を表示しないようにする。最終的な方法でこれらの新しい変数にアクセスするにはどうすればよいでしょうか?

注:

要件:

  1. createSequence(シーケンスを作成します)

  2. )メイン

  3. 内の変数は、(初期化の変数を初期化宣言displaySequence(その後、別の方法でシーケンスを表示)

  4. ついにdisplayStatisticsは、長さ、すなわち、(独自の方法で)最大、オッズを均等に、これは私に

+0

String型を返す代わりに、4つの変数の配列を返すことができます。 –

+0

@ LuaiGhunimのコメントに追加するには、配列は5文字列の配列にすることができます。ここで 'arr [0]'はあなたのシーケンスです、 'arr [1]' -'arr [4] 'はあなたが望む4つの整数値ですが、あなたが文字列から整数を取得するためには、 'Integer.parseInt(arr [1])'など。 –

+0

@DavyMメソッドは完全に機能しました。ありがとう。 – Tealdragon204

答えて

1

あなたを再実装してみ手を煩わせるだものです私のベースコードのコードオフ

public class Question{ 

    public class NumberStats { 
     int len; 
     boolean isOdd; 
    } 

    private ArrayList<NumberStats> stats = new ArrayList<>(); 
    public static void main(String[] args){ 
     Question q = new Question(); 
     Scanner kb = new Scanner(System.in); 
     String number = ""; 
     do { 
      System.out.println("Enter a series of numbers or q to quit: "); 
      number = kb.next(); 
      q.stats.add(q.parseNumber(number)); 
     } while (number.equals("q")==false); 

     q.printSummary(); 


    } 

    private void printSummary(){ 
     int oddCount = 0; 
     int evenCount = 0; 
     int longestNumber = 0; 

     for (NumberStats s : stats){ 
      if (longestNumber<s.len){ 
       longestNumber = s.len; 
      } 
      if (s.isOdd){ 
       oddCount+=1; 
      } else { 
       evenCount+=1; 
      } 
     } 
     System.out.println(String.format("Longest number length was : %i, Odd Numbers: %i, Even Numbers: %i",longestNumber,oddCount,evenCount)); 
    } 
    private NumberStats parseNumber(String number){ 
     NumberStats stats = new NumberStats(); 
     Integer lastNumber = Integer.parseInt(String.valueOf(number.charAt(number.length())); 
     stats.isOdd = true; 
     if (lastNumber%2==0){ 
      stats.isOdd = false; 
     } 
     stats.len = number.length(); 
     return stats; 

    } 
} 
0

あなたの先生は、あなたがSequenceクラスを作成した場合、もう少し感銘を受けるかもしれません。クラスの属性は、getterメソッドを介してアクセスできるstatsです。 createSequenceメソッドはコンストラクタになります。また、コンテンツの文字列表現を返すtoStringメソッドを実装できます。

関連する問題