Java 在While循环中创建包含字符的字符串
我制作了一个scanner程序,在这个程序中,它读取一种伪语言,并返回一个数字字符串来表示关键字、字母/带有数字的字母、数字和符号,然后返回到一个文本文件,供解析器读取 我遇到的问题是,当最初读取的文本文件中有一个数字超过一位时,它会返回如下结果: 1=字母 12=相等 2=数量 777是第一个文本中的数字 初始文本中的示例:b=777 最终文本:1127727 当我真的想要112777的时候 我知道我应该把777这个字符变成一个字符串,但我的困惑在于,当我在我发布的循环中有了这个字符时,我该如何让它先出现呢 我还有另一个单词循环,同样的问题 多谢各位Java 在While循环中创建包含字符的字符串,java,while-loop,filereader,filewriter,Java,While Loop,Filereader,Filewriter,我制作了一个scanner程序,在这个程序中,它读取一种伪语言,并返回一个数字字符串来表示关键字、字母/带有数字的字母、数字和符号,然后返回到一个文本文件,供解析器读取 我遇到的问题是,当最初读取的文本文件中有一个数字超过一位时,它会返回如下结果: 1=字母 12=相等 2=数量 777是第一个文本中的数字 初始文本中的示例:b=777 最终文本:1127727 当我真的想要112777的时候 我知道我应该把777这个字符变成一个字符串,但我的困惑在于,当我在我发布的循环中有了这个字符时,我该如
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
while(text.charAt(i)>='0'&&text.charAt(i)<='9')
{
log(Integer.toString(CONST));
System.out.println(CONST);
char num =text.charAt(i);
System.out.println(num);
log(Character.toString(num));
i++;
}
import java.util.Scanner;
导入java.io.BufferedReader;
导入java.io.FileReader;
导入java.io.FileWriter;
导入java.io.IOException;
导入java.io.PrintWriter;
while(text.charAt(i)>='0'&&text.charAt(i)当您的代码无法工作时,您应该做的第一件事是将其塑造成可测试的东西,并编写一个失败的测试
我通过以下方式修改了您的代码:
- 删除您没有解释的部分或看起来不相关的部分(
CONST
和log()
)
- 对任意
写入程序进行写入,而不是硬代码系统.out
因此:
测试通过了——所以要么你的代码正常工作,要么我误解了你的要求。但是如果你遵循这种工作方法并编写了一个失败的测试,那么回答者就可以更容易地帮助你了。如果你不知道@test
是什么,那就去了解一下jUnit。它非常标准,可以挽救你的生命。
private void consumeDigits(Writer writer, String text) throws IOException {
int i=0;
while (text.charAt(i) >= '0' && text.charAt(i) <= '9') {
char num = text.charAt(i);
writer.append(num);
i++;
}
}
@Test
public void printStackTrace() throws IOException {
String text = "777abcdef";
StringWriter writer = new StringWriter();
consumeDigits(writer, text);
assertEquals(writer.toString(), "777");
}