2017-02-03 174 views
-1

只是不打印與上面的行相同的輸出,我無法弄清楚爲什麼發生這種情況,我注意到它從最後打印最後N個數字,無論我輸入什麼它會再次打印該參數。不打印相同的輸出

這裏的主要

public class main { 
    public static void main(String args[]) { 
    ScalesSolution s1 = new ScalesSolution(11); 
    s1.println(); 
    ScalesSolution s2 = new ScalesSolution(s1.GetSol()); 
    s2.println(); 
} 
} 

繼承人的ScalesSolution類

import java.util.ArrayList; 
import java.util.Random; 

public class ScalesSolution { 
private String scasol; 

public void print() { 
    System.out.print(scasol); 
} 

// Display the string with a new line 
public void println() { 
    print(); 
    System.out.println(); 
} 



public String GetSol() 
{ 
    return scasol; 
} 
} 

繼承人的randomOther類

import java.util.*; 
import java.io.*; 

public class randomOther { 
// Shared random object 
static private Random rand; 

// Create a uniformly distributed random integer between aa and bb inclusive 
static public int UI(int aa, int bb) { 
    int a = Math.min(aa, bb); 
    int b = Math.max(aa, bb); 
    if (rand == null) { 
     rand = new Random(); 
     rand.setSeed(System.nanoTime()); 
    } 
    int d = b - a + 1; 
    int x = rand.nextInt(d) + a; 
    return (x); 
} 

// Create a uniformly distributed random double between a and b inclusive 
static public double UR(double a, double b) { 
    if (rand == null) { 
     rand = new Random(); 
     rand.setSeed(System.nanoTime()); 
    } 
    return ((b - a) * rand.nextDouble() + a); 
} 
static public ArrayList<Double> ReadNumberFile(String filename) { 
    ArrayList<Double> res = new ArrayList<Double>(); 
    Reader r; 
    try { 
     r = new BufferedReader(new FileReader(filename)); 
     StreamTokenizer stok = new StreamTokenizer(r); 
     stok.parseNumbers(); 
     stok.nextToken(); 
     while (stok.ttype != StreamTokenizer.TT_EOF) { 
      if (stok.ttype == StreamTokenizer.TT_NUMBER) { 
       res.add(stok.nval); 
      } 
      stok.nextToken(); 
     } 
    } catch (Exception E) { 
     System.out.println("+++ReadFile: " + E.getMessage()); 
    } 
    return (res); 
} 
} 

這裏是問題的輸出:

00101001010101101011001011010101101001011010001011010010101101001001011010010 
01011010010 

我相信,兩個輸出應該是相同的,我看到有一個問題就在這裏,不知道爲什麼他們不

+2

請提供一個更小的例子,它仍然會重現錯誤。說,通過刪除一些功能。另外,我看到你在代碼中使用了Random,並用當前時間對它進行種子處理,請擺脫隨機性(例如,通過使用常量數據進行種子處理,或者,甚至更好,通過消除隨機依賴並使用硬編碼的常量)。 – yeputons

+0

我不確定如何編輯它:s – Galfi

+1

請查看StackOverflow關於[MCVE](http://stackoverflow.com/help/mcve)的教程。 – yeputons

回答

0

我看到你正在使用System.out.printRandomBinaryString(int n)內的方式造成混亂。它正在打印並追加到字符串s。儘量避免這種情況。更換System.out.print(s += '0');System.out.print(s += '1');s += '0';s += '1';RandomBinaryString將修復您的輸出。

在代碼中使用的片段如下:

private static String RandomBinaryString(int n) { 
    String s = new String(); 

    // Code goes here 
    // Create a random binary string of just ones and zeros of length n 
    for (int i = 0; i < n; i++) { 
     int y = randomOther.UI(0, 1); 
     if (y == 0) { 
      s += '0';// this line here was changed 
     } else { 
      s += '1';// and this line here was changed too 
     } 
    } 

    return (s); 
} 

希望這有助於!

+1

謝謝....哇,非常感謝,它很有趣,因爲我忘記從前一天刪除這個,我忘了重新刪除它.-。 – Galfi

+0

很高興幫助! – anacron