我是这个网站的新手,java和通用编程。你说我是一个总菜鸟。所以这是我的问题: 我刚刚开始处理文件,所以我尝试了各种各样的练习。说我想在文件中写下很多数字。如果我使用此代码,一切正常:
private Event nvcToCoreEvent(NameValueCollection nvc)
{
Func<string, string> getBinderKey = delegate (string originalKey)
{
IList<string> keyParts = new List<string>();
// Capture anything between square brackets.
foreach (Match m in Regex.Matches(originalKey, @"(?<=\[)(.*?)(?=\])"))
{
int collectionIndex;
if (int.TryParse(m.Value, out collectionIndex))
{
// Preserve what should be actual indexer calls.
keyParts[keyParts.Count - 1] += "[" + m.Value + "]";
}
else
{
keyParts.Add(m.Value);
}
}
// Format the key the way the default binder expects it.
return string.Join(".", keyParts);
};
// Convert the NameValueCollection to a FormDataCollection so we use it's magic sauce.
FormDataCollection formData = new FormDataCollection(nvc.AllKeys.Select(x => new KeyValuePair<string, string>(getBinderKey(x), nvc[x])));
// Internally this actually uses a model binder to do the mapping work!
return formData.ReadAs<Event>();
}
使用所有预期的数字创建newFile.txt。 但是如果使用这段代码来编写从0到9的随机选择的数字,
int value = 0;
int max = 10000;
try {
FileWriter wr = new FileWriter("newFile.txt");
for (int i = 0; i < max; i++){
value = i;
wr.write(value + " ");
}
wr.close();
} catch (Exception e){
println(e);
}
创建了newFile.txt但填充了&lt;&lt; ‱‷‱‰'‱'``‰'‸‸'`‸‸‰```````&gt;。
请注意,RandomGenerator是一个来自acm包的类 - 我的学习书在示例中使用的包。
我尝试过不同的类,如BufferedWriter和PrintWriter,但我得到了相同的输出。
那么,我在这里错过了什么吗?我真的无法弄明白。
谢谢。
编辑:感谢您的快速回复。我已经尝试通过 int value = 0;
int max = 10000;
try {
FileWriter wr = new FileWriter("newFile.txt");
for (int i = 0; i < max; i++){
value = RandomGenerator.getInstance().nextInt(0,9);
wr.write(value + " ");
}
wr.close();
} catch (Exception e){
println(e);
}
和System.out.println
一起获得输出。屏幕输出是预期的,但文件输出不是。
虽然发生了一些更奇怪的事情:我再次运行它但范围从0到10.我改变的唯一一件事是这一行:
wr.write
现在newFile.txt正如预期的那样..任何想法为什么都是??
感谢名单
答案 0 :(得分:1)
我认为您的代码没有任何问题。
略有改动的版本,无需随机库即可使用:
int max = 10000;
Random random = new Random();
try(FileWriter wr = new FileWriter("newFile.txt")) {
for (int i = 0; i < max; i++){
int value = random.nextInt(9);
wr.write(value + " ");
}
} catch (Exception e){
e.printStackTrace();
}
当我运行上述内容时,我得到了预期的文件,其中包含大量从0到8的数字。
如果您的随机库确实返回了int
,那么即使在错误的范围内,也一定要在文件中获取数字。
问题可能在于您可视化文件?它可能是编码,因为此代码使用您平台的默认编码(导致此问题可能非常奇怪)。
尝试将其用作编写器以确保使用UTF-8编写文件:
try(OutputStreamWriter wr = new OutputStreamWriter(
new FileOutputStream("newFile.txt"), "UTF-8")) {
答案 1 :(得分:-1)
Class::XSAccessor: invalid instance method invocant: no hash ref supplied at