2017-09-03 75 views
0

所以我被指示編寫一個類,生成一個數組(返回),排序生成的數組,返回排序的數組,然後檢查排序的如果有任何兩個相鄰的#是相同的(如果有的話返回True,否則返回False)。從主要方法不工作的打印方法 - Java

我已經設法將所有東西都寫出來,但是我的最後一組指令是用主要打印語句來填充,這些打印語句調用我寫入的較低方法以寫入的順序顯示。

我設法得到原始隨機生成的數組被調用和打印,但是我沒有任何運氣調用任何其他方法,如我做了第一個,並嘗試了所有我能想到的獲得他們只是提供打印他們的結果與提供「這是等等等等等等:」

如果任何人都可以指出我在正確的方向,只要能夠調用其他方法來打印他們的結果,以及每個打印包括一個基本語句,如「隨機數組是:」,「排序數組是:」,「反轉數組是:」,「它是(真/假)這個數組有相鄰的副本。」我會非常感激。在這一點上,我嘗試過的任何東西都已經奏效,並且即時處於完全停滯狀態。我一直在努力工作熟悉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; 
    } 

此外,你有它的返回設置爲void,而不是int []。


相鄰重複

老實說,我不知道這到底是在adjacentDuplicates回事。看起來像if和for方法什麼都沒做,因爲你在)之後直接放置了;

你的代碼需要);結束之間就來了,或者你需要使用{} for循環聲明(如下圖所示)之後。

另外,使用這些下一行括號對於可讀性來說是很糟糕的,我建議不要這樣做。這就是adjacentDuplicates方法的樣子。

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 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.上市再次在底部。


換行符東西

看來,你想讓它格式化不同。我會讓你獲得這樣做的享受,但請注意:

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到從主打印...

也不知道我怎麼manged獲取初始隨機陣列打印在同一行,我需要的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(); 
    } 
}