2017-09-03 3 views
0

配列を生成するクラスを作成し、生成された配列をソートし、ソートされた配列をリターンして戻し、並べ替えを確認するよう指示されました。隣り合う2つの#が同じであればTrueを返します。存在しなければFalseを返します。メインメソッドからの印刷メソッドが機能しない - Java

私は最後まで説明した内容からすべてを書いていましたが、私が書いた順序で表示するために書いた下位のメソッドを呼び出すprintステートメントをmainに書きます。

ランダムに生成された元の配列を呼び出して印刷することができましたが、最初のように他のメソッドを呼び出すことはできませんでした。

他の方法を呼び出して各印刷物を印刷することができるのであれば誰でも正しい方向に向けることができます。 "The Random array is:"、 "Sorted array is:"、 "Reversed array is:"、 "(TRUE/FALSE)この配列に隣接する重複があります。私は非常に感謝しています。この時点で私が試したことはありませんでした。そして、私は完全に停止しました。私もjavaに精通している友人を働こうとしてきましたが、私たちはあまりにも立ち往生しているようです。これは私が今までに書いたものです...

import java.util.*; 

public class SortedSequence 
{ 
    public static void main(String[] args) 
{ 
    int[] randomNumbers = new int[20]; 
    randomNumbers = generateRandom(20); 
    printArray(randomNumbers); 

// This is where Im getting stuck at. Everything I've tried makes a compile error 

} 

    public static int[] generateRandom(int n) 
    { 
    int[] genNumbers = new int[n]; 

    Random rand = new Random(); 
     for (int i = 0; i < genNumbers.length; i++) 
    { 
     int bubble = rand.nextInt(100); 
     genNumbers[i] = bubble; 
    } 
     return genNumbers; 
    } 

    public static void sortArray(int[] genNumbers) 
    { 
     Arrays.sort(genNumbers); 
    } 

    public static int[] reverse(int[] x) 
     { 
     int[] sortArray = new int[x.length]; 
     for (int i = 0; i < x.length; i++) { 
     sortArray[i] = x[x.length - 1 -i]; 
     } 
     return sortArray; 
     } 


    public static boolean adjacentDuplicates(int[] boo) 
    { 
     boolean duplicates = false; 
     for (int i = 0; !duplicates && i < boo.length-1; i++) 
     if (boo[i] == boo[i+1]); 
    { 
     duplicates = true; 
    } 
     return duplicates; 
    } 

    public static void printArray(int[] print) 
    { 
     for (int i = 0; i < print.length; i++) { 
     System.out.print(print[i] + " "); } 
     System.out.println(); 
    } 
} 

答えて

1

私はコードをコンパイルしましたが、エラーはまったくありません。

が、私はそうのように、メインクラスに printArray(reverse(randomNumbers));を追加しました:

public static void main(String[] args) 
{ 
    int[] randomNumbers = new int[20]; 
    randomNumbers = generateRandom(20); 
    printArray(randomNumbers); 
    printArray(reverse(randomNumbers)); 

// This is where Im getting stuck at. Everything I've tried makes a compile error 

} 

やプログラムを実行すると、それが返さ:それはあなたのコンパイラで問題だ、または同じよう

28 87 13 22 85 0 60 59 90 30 52 15 32 72 9 76 83 89 36 39 
39 36 89 83 76 9 72 32 15 52 30 90 59 60 0 85 22 13 87 28 

に見えますあなたはそのクラスをどのように呼び出していたのですか?


次の質問への回答。

ソートされたクラスに必要なものは次のとおりです。 Arrays.sort()メソッドは配列を受け取り、手動で配列を移動します。 :

public static int[] sortArray(int[] genNumbers) 
    { 
     Arrays.sort(genNumbers); 
     return genNumbers; 
    } 

また、int []ではなくvoidとして設定されています。


隣接する重複

私は正直地獄はadjacentDuplicatesで何が起こっていたか見当がつかない。 ifとforのメソッドは何もしなかったように見えます。これはの直後に;を置くからです。

コードは、);の間に来る必要があります。また、forループ宣言の後に{}を使用する必要があります(下記参照)。

また、これらの次の角かっこを使用するのは読みやすくするためにひどいです。私はそれに反対します。 adjacentDuplicatesメソッドは次のようになります。

public static void main(String[] args) 
{ 
    int[] randomNumbers = new int[20]; 
    randomNumbers = generateRandom(20); 


    System.out.print("Array: "); 
    printArray(randomNumbers); 
    System.out.print("Reversed: "); 
    printArray(reverse(randomNumbers)); 
    System.out.print("Sorted: "); 
    printArray(sortArray(randomNumbers)); 
    System.out.print("Adjacent Duplicates?: "); 
    System.out.println(adjacentDuplicates(randomNumbers)); 
    // If we sort out the numbers, then any duplicates will become adjacent to each other 
    System.out.print("Duplicates at all?: "); 
    System.out.println(adjacentDuplicates(sortArray(randomNumbers))); 

// This is where Im getting stuck at. Everything I've tried makes a compile error 

} 

試運転:上場

Array: 92 18 5 16 68 10 85 58 50 56 91 48 45 28 63 98 94 15 93 64 
Reversed: 64 93 15 94 98 63 28 45 48 91 56 50 58 85 10 68 16 5 18 92 
Sorted: 5 10 15 16 18 28 45 48 50 56 58 63 64 68 85 91 92 93 94 98 
Adjacent Duplicates?: false 
Duplicates at all?: false 

Here's the full class.

は今、ここに私たちはすべてのことをプリントアウトし、読みやすい情報を得ることができる方法だということを実行している

public static boolean adjacentDuplicates(int[] boo) { 
     boolean duplicates = false; 
     for (int i = 0; !duplicates && i < boo.length-1; i++) { 
      if (boo[i] == boo[i+1]) duplicates = true; 
     } 
     return duplicates; 
    } 

もう一度底に。


改行スタッフ

あなたがそれが異なってフォーマットしたいことが表示されます。

System.out.print("bla") 

はこれを印刷していない文字列を出力します終了

System.out.println("blap"); 

に改行を追加し、追加されます:私はあなたがそれを行うために得ることの楽しさを持っていますが、注意してくださいもらおう改行。

ので

System.out.print("bla"); 
System.out.println("blap"); 
System.out.print("blo"); 

は正確に

System.out.print("bla blap\n blo") 

印刷することになるの両方を実行しているようなものです:

bla blap 
blo 

Here's all of that code

+0

私はjgraspを使用しています。それは私のために働いたのかもしれません。なぜなら、sortArrayメソッドがコンパイルの問題に戻ってきているからです。これは、なぜコンパイルエラーで戻ってくるのかという理由がないという返事がないからです。 –

+0

@Mattあなたは何を取得していますか? –

+0

私の状況をそこから考えれば、私が何をしたのかを更新しました。 –

0

だから私は3 int配列を印刷しました。

メインから印刷するブールのTまたはFを取得する方法がわからない...

また

私は私が必要なTXTと同じ行に印刷するには、最初のランダムな配列を取得するためにうまく管理方法がわかりません配列の前に存在していますが、特に他のコードはすべて同一で、同じことをしていません。

説明文と同じ行に配列を出力するための推奨事項はありますか?私の真偽の状況はどうですか?

/** 
* This class generates a random array of 20 int long, sorts 
* the array, reverses the array, check to see if there are 
* any duplicate adjacent numbers, prints true if there are or 
* false if there aren't, and then prints the results. 
* 
*@author Matthew Jackson 
*@version 9/5/2017 
* 
*/ 
import java.util.*; 

public class SortedSequence 
{ 
    public static void main(String[] args) 
    { 
    System.out.print("The Random array is: "); 
    int[] randomNumbers = new int[20]; 
    randomNumbers = generateRandom(20); 
    printArray(randomNumbers); 
    System.out.println(); 

    System.out.println("The Sorted array is: "); 
    sortArray(randomNumbers); 
    printArray(randomNumbers); 
    System.out.println(); 

    System.out.println("The Reverse array is: "); 
    printArray(reverse(randomNumbers)); 
    System.out.println(); 

    System.out.println("It is" + "this array has adjacent duplicates"); 
    if(adjacentDuplicates(randomNumbers)) 
    { 
    // Put something here to print the boolean T/F? 
    } 

} 

/** 
    * Generate an array of type int and size n that returns 
    * this array from the method 
    * 
    *@param n Generate random number array 
    *@return Return array list that was generated 
    */ 

    public static int[] generateRandom(int n) 
    { 
    int[] genNumbers = new int[n]; 

    Random rand = new Random(); 
     for (int i = 0; i < genNumbers.length; i++) { 
     int bubble = rand.nextInt(100); 
     genNumbers[i] = bubble; } 
     return genNumbers; 
    } 

/** 
    *Sort array of randomly generated numbers 
    * 
    *@param genNumbers Calls method of randomly generated number array 
    */ 

    public static void sortArray(int[] genNumbers) 
    { 
     Arrays.sort(genNumbers); 
    } 

    /** 
    *Reverse array of sorted array numbers 
    * 
    *@param Reverses list of sorted array numbers. 
    *@return Return array in reverse original order 
    */ 

    public static int[] reverse(int[] x) 
     { 
     int[] sortArray = new int[x.length]; 
     for (int i = 0; i < x.length; i++) { 
     sortArray[i] = x[x.length - 1 -i]; 
     } 
     return sortArray; 
     } 

    /** 
    *Check array list to see if there are any duplicates 
    *adjacent to each other 
    * 
    *@param duplicates True if adjacent numbers are same, 
    *     false if not. 
    *@return Returns True/False if there are adjacent duplicates or not 
    */ 

    public static boolean adjacentDuplicates(int[] boo) 
    { 
     boolean duplicates = false; 
     for (int i = 0; !duplicates && i < boo.length-1; i++) 
     if (boo[i] == boo[i+1]); 
     { //else infront of the {? 
     duplicates = true; 
    } 
     return duplicates; 
    } 

    /** 
    *Prints given array 
    * 
    *@param print Prints any method called to it 
    */ 

    public static void printArray(int[] print) 
    { 
     for (int i = 0; i < print.length; i++) { 
     System.out.print(print[i] + " "); } 
     System.out.println(); 
    } 
} 
関連する問題