- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个扩展 FilterInputStream 类的流。 A 正在从流中读取 double ,B 应获取这些 double 并对它们应用随机噪声。问题是如何正确实现第二个流,以便 B 可以访问 A 返回 double 的自定义函数。链接应如下所示:
源 ----> A ----> 双 ----> B ----> 加噪声的双
最诚挚的问候,图拉卡
最佳答案
一个FilteredInputStream
似乎不太适合您的问题,如 InputStream
表示一个字节序列,但你需要的是 double
的序列数字。一种可能的替代方案是实现 Iterator
接口(interface)代替。因此A
会变成:
import java.io.InputStream;
import java.util.Iterator;
import java.util.Scanner;
public class DoubleIterator implements Iterator<Double> {
private Scanner scanner;
public DoubleIterator(InputStream is) {
scanner = new Scanner(is);
}
@Override
public boolean hasNext() {
return scanner.hasNextDouble();
}
@Override
public Double next() {
return scanner.nextDouble();
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
和B
会变成
import java.util.Iterator;
import java.util.Random;
public class NoiseIterator implements Iterator<Double> {
Random r = new Random();
private Iterator<Double> source;
public NoiseIterator(Iterator<Double> source) {
this.source = source;
}
@Override
public boolean hasNext() {
return source.hasNext();
}
@Override
public Double next() {
return source.next()+r.nextGaussian();
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
这些类可以按以下方式使用:
String s = "1 56 123 30 0";
Iterator<Double> it = new DoubleIterator(new ByteArrayInputStream(s.getBytes()));
while(it.hasNext()) {
System.out.println(it.next());
}
it = new NoiseIterator(new DoubleIterator(new ByteArrayInputStream(s.getBytes())));
while(it.hasNext()) {
System.out.println(it.next());
}
典型输出:
1.0
56.0
123.0
30.0
0.0
-0.011797617285828732
55.71721599815757
123.33995522117877
29.16152453760448
-0.9614750776766922
关于java - 如何在另一个 FilterInputStream 中使用 FilterInputStream 的自定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33321935/
我有两个扩展 FilterInputStream 类的流。 A 正在从流中读取 double ,B 应获取这些 double 并对它们应用随机噪声。问题是如何正确实现第二个流,以便 B 可以访问 A
我正在尝试使用 FilterInputStream,但无法使其正常工作。如果我对 FilterReader 进行编程,一切顺利: import java.io.*; class Filter exte
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我从函数获取一个 FilterInputStream 对象作为返回类型。现在我将作为流获取的文件是日志文件。所以我认为它可能是大文件。所以我不想一次读取所有数据。但循环读取数据是一项乏味的工作。 我需
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我是一个平台的开发人员之一,该平台除其他功能外,还允许用户上传数据文件(来自不同来源)以使用各种脚本进行处理。 Excel for Mac 中以制表符分隔的数据文件不断出现问题。 Excel for
block 引号来自 Java 文档 - A FilterInputStream contains some other input stream, which it uses as its basi
我计划使用 Java 处理 Markdown 文本文件,这些文件在文档开头以 YAML 格式指定附加元信息,如标题、作者、创建日期等。这是一个例子: --- title: An example doc
我试图限制通过下面的类上传到我的应用程序的文件大小。我正在读取输入流,并在文件大小超过限制时抛出异常。 但令人惊讶的是,下面的代码读取的字节数总是比实际文件大小大 12.5%。我已经对多个文件进行了尝
我刚发现FilterInputStream(InputStream)具有与 FilterOutputStream(OutputStream) 的访问修饰符 (protected) 不同的访问修饰符 (
我已经很多年没有写过任何 Java 了,我回过头来用一个简单的“从文件读取”示例来刷新我的内存。这是我的代码.. import java.io.*; public class filereading
我是一名优秀的程序员,十分优秀!