Методы, использующие r.nextDouble()
, должны использовать:
long number = (long) (rand.nextDouble()*max);
long number = x+(((long)r.nextDouble())*(y-x));
Я использовал бы ByteArrayOutputStream
. И на конце можно звонить:
new String( baos.toByteArray(), codepage );
или лучше:
baos.toString( codepage );
Для String
конструктор, эти codepage
может быть String
или экземпляр java.nio.charset. Набор символов . Возможное значение java.nio.charset. StandardCharsets. UTF_8.
метод toString()
принимает только String
как codepage
параметр (выдержите Java 8).
Мне нравится библиотека Apache Commons IO. Смотрите на его версию ByteArrayOutputStream, который имеет toString(String enc)
метод, а также toByteArray()
. Используя существующие и доверяемые компоненты как палата общин проект позволяет Вашему коду быть меньшим и легче расширить и повторно иметь целью.
Вот то, что я закончил тем, что делал:
Obj.writeToStream(toWrite, os);
try {
String out = new String(os.toByteArray(), "UTF-8");
assertTrue(out.contains("testString"));
} catch (UnsupportedEncondingException e) {
fail("Caught exception: " + e.getMessage());
}
, Где OS ByteArrayOutputStream
.
Это отлично сработало
OutputStream output = new OutputStream()
{
private StringBuilder string = new StringBuilder();
@Override
public void write(int b) throws IOException {
this.string.append((char) b );
}
//Netbeans IDE automatically overrides this toString()
public String toString(){
return this.string.toString();
}
};
вызов метода = >> marshaller.marshal ((Object) toWrite, (OutputStream) output);
затем, чтобы напечатать строку или получить ее просто укажите сам "выходной" поток
В качестве примера, чтобы вывести строку на console = >> System.out.println (output);
FYI: мой вызов метода marshaller.marshal (Object, Outputstream)
предназначен для работа с XML. Это не имеет отношения к этой теме.
Это очень расточительно для производственного использования, существует слишком много преобразований, и это немного плохо. Это было просто закодировано, чтобы доказать вам, что вполне возможно создать собственный OuputStream и вывести строку. Но просто идите по пути Horcrux7, и все будет хорошо с двумя вызовами методов.
И мир живет другим днем ....