2017-02-03 9 views
-1

단순히 위의 출력과 동일한 출력을 인쇄하지 않고이 문제가 발생한 이유를 알아낼 수 없습니다. 입력 한 내용에 관계없이 마지막 N 개의 숫자가 뒤에서 인쇄됩니다. 매개 변수는 해당 양을 다시 인쇄합니다.동일한 출력을 출력하지 않음

00101001010101101011001011010101101001011010001011010010101101001001011010010 
01011010010 
:

여기 여기에 출력 문제입니다

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; 
} 
} 

을 heres 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); 
} 
} 

ScalesSolution 클래스를 Heres는 주요

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

입니다 16,

나는 두 출력은 동일해야한다고 생각하고 내가 보는 당신이 당신의 RandomBinaryString(int n) 내부 System.out.print를 사용하는 방법은 혼란을 일으키는 것을

+2

오류를 재생산하는 더 작은 예제를 제공해주십시오. 일부 기능을 제거하여 말하십시오. 또한 코드에서'Random'을 사용하고 현재 시간을 시드하는 것을 볼 수 있습니다. 또한 무작위성을 제거하십시오 (예 : 상수 데이터를 시드하거나 임의적으로 종속성을 제거하고 하드 코드 된 const). – yeputons

+0

그런 식으로 편집하는 방법이 확실하지 않습니다. s – Galfi

+1

[MCVE] (http://stackoverflow.com/help/mcve)에서 StackOverflow의 자습서를 확인하십시오. – yeputons

답변

0

을하지 않은 이유는 문제가 여기에 있는지 없는지를 참조하십시오. 인쇄 중이며 문자열 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