- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我尝试为 Java 类(class)编写一个小型解析器:该解析器使用 Scanner 类:
import java.util.Scanner;
import java.io.*;
public class WC1 {
public static void main(String[] args) throws Exception{
File f = new File(args[0]);
Scanner in = new Scanner(f);
int c=0, w=0, l=0;
while (in.hasNext()) {
String line = in.nextLine();
int N = line.length();
boolean word = false;
for (int i=0;i<N;i++) {
char ch = line.charAt(i);
if (ch == '\r' || ch=='\n') {
if (word == true) w++;
word = false; // do nothing
}
else if (ch == ' ' || ch == '\t') {
if (word == true) w++;
word = false;
c++;
}
else {
word = true;
c++;
}
}
if (word == true) w++;
word = false; // scanner consumes newline but does not return it
c++; // scanner throws away the newline
l++;
System.out.println(line);
}
in.close();
System.out.println("" + c + " characters");
System.out.println("" + w + " words");
System.out.println("" + l + " lines");
}
}
文件1:
我使用下面的三个小输入文件对其进行了测试:
The reason for the exception is that you are calling keyIn.close() after you use the scanner once, which not only closes the Scanner but also System.in. The very next iteration you create a new Scanner which promptly blows up because System.in is now closed. To fix that, what you should do is only create a scanner once before you enter the while loop, and skip the close() call entirely since you don't want to close System.in.
After fixing that the program still won't work because of the == and != string comparisons you do. When comparing strings in Java you must use equals() to compare the string contents. When you use == and != you are comparing the object references, so these comparisons will always return false in your code. Always use equals() to compare strings.
java MyClass File1.dat
779 characters
136 words
3 lines
wc File1.dat
3 136 779 test.dat
文件2:
cat
dog
goose chicken
rat
dragon
crab
java MyClass File2.dat
47 characters
7 words
7 lines
wc File2.dat
7 7 47 File2.dat
但这不起作用:
文件3:
|
|
|
|
|
|
|
|
java MyClass File3.dat
0 characters
0 words
0 lines
wc File3.dat
8 0 36 File3.dat
文件 3 仅由空格和换行符组成:管道符号表示行尾。
这里发生了什么?注意 File2 中的空行。为什么扫描程序似乎忽略了 File3 中的空格?
最佳答案
while (in.hasNext()) {
String line = in.nextLine();
您在这里检查扫描仪 hasNext
但继续前进nextLine
。这些基本上是不相关的。您发现的结果是您的第三个文件没有标记(由空格分隔的非空格),但它有行。在您的情况下,您应该始终检查 hasXXX
与您实际使用的升级方法:
while (in.hasNextLine()) {
String line = in.nextLine();
关于java.util.Scanner : Behavior with whitespace-only input?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22999317/
请参阅此示例: http://jsfiddle.net/EwtaC/1/ 图像通过display:inline-block设置样式。我知道空格会以某种方式对此产生影响..(无论出于何种原因)所以我删除
我在这里设置了一个 CSS 菜单: http://pans.saebermedia.com/ 问题是,我注意到 IE 无法正确显示菜单,现在我又开始使用装有 IE8 的计算机来修复它。我正在使用兼容模
如果你尝试这样做: var x = document.createElement("div"); x.appendChild(document.createTextNode(" te
我创建了一个报表,该报表的左侧有一个图像,该图像根据传递给该报表的参数有条件地可见。页面右侧还有另一个文本框。 我观察到,当图像的“隐藏”属性设置为“True”时,右侧的文本框将保留在正确的位置。当图
Closed. This question is off-topic。它当前不接受答案。 想要改善这个问题吗? Update the question,所以它是用于堆栈溢出的on-topic。 已关闭
当我使用 ``# `` 在我的 Sphinx 文档中,我收到以下警告: WARNING: Inline literal start-string without end-string. 试 :samp
我正在尝试对 Linux 系统上具有 Windows 行结尾的文件应用补丁,但由于文件中的回车符而出现冲突。 -l 选项(忽略空格)不会忽略 EOL 字符。 有没有办法获得补丁来忽略Windows风格
您实际上如何更改vscode的“editor.tabSize”和“editor.insertSpaces”值?我打开了文件>首选项>用户设置,并添加了: // Place your settings
有谁知道一个命令行 exe/工具可以 可靠 从 C# 语言的行尾修剪空格? 最佳答案 它必须是命令行吗? Visual Studio 会在你做 Format Document 时( Ctrl+E+D
尝试创建一个背景色为白色的内容框。它位于页眉 div 和页脚 div 之间,它们都是图像。我无法让它与两个 div 对齐并且没有空白,只有一个或另一个。 这是 CSS: #content {
我想要对空白进行精细控制,但仍然有可读的模板。 只是想通过简单的用例看看其他人的解决方案。 {{name}} {{#if age}} , {{age}} {{/if}} # outputs {{n
如果我在Atom设置中选择Show Invisibles,则所有不可见的字符都变为可见: 我想隐藏EOL,因为它们会污染 View 。 这是可以实现的吗? 最佳答案 没有ui选项,但是可以通过Atom
我知道之前已经有人问过如何用前导空格分割字符串的问题,例如: String str = " I want to be split \t!" String[] sarr = str.split("\\
我不确定 slider 顶部和底部的额外空白来自哪里。是填充还是边距?如果有人可以帮助我,我将不胜感激。 jsfiddle.net/fH3EL 最佳答案 这是因为 bx-slider CSS 文件造成
我有一种自定义脚本语言,我正在尝试使用 XTEXT 进行语法检查。它归结为格式为单行命令 COMMAND:PARAMETERS 在大多数情况下,xtext 运行良好。我目前遇到的唯一问题是如何处理需要
我有一个包含超过 1,000,000 个条目的数据库,其中一些在值的开头/结尾包含空格字符。 我已经尝试了以下查询并且它有效,但我将不得不检查 1,000,000 条记录,因为所有 ID 都是唯一的
Perl 6 清除了其前身中的一些奇怪情况,不允许在某些地方使用空格,但在其他地方也执行工作。空间在哪里重要?有一个完整的引用会很好,因此我添加了一个社区 wiki 答案,我会用你的代表答案来更新。示
我想知道有什么方法可以在 Doxygen 的 html 的评论中插入空格吗?我在网上和 Doxygen 手册上搜索过,但找不到任何可以做到这一点的东西。 例如,我试图添加评论如下: //! mot
有人可以澄清一下空格在 Perl 6 语法中的规则中什么时候很重要吗?我通过反复试验学习了一些,但似乎无法在文档中找到实际规则。 示例 1: rule number { \d '.'? \d
我有一个代码库,由于尾随空格而使我发疯。我想把它清理干净。 我想: 删除所有尾随空格 删除文件末尾的所有换行符 将所有行尾转换为 unix (dos2unix) 将所有前导空格转换为制表符,即将 4
我是一名优秀的程序员,十分优秀!