gpt4 book ai didi

java - 在 While 循环中创建包含字符的字符串 Java

转载 作者:行者123 更新时间:2023-11-30 07:02:45 24 4
gpt4 key购买 nike

我制作了一个扫描程序,它可以读取假语言,并将代表关键字、字母/带有数字、数字和符号的字母的数字字符串返回到文本文件以供解析器读取。

我遇到的问题是,当最初读取的文本文件中有一个超过一位数字的数字时,它会像这样返回:

1 = 字母

12 = 等于

2 = 数字

777 是第一个文本中的数字。

例如。在初始文本中:b = 777

最终文本:1 12 2 7 2 7 2 7

当我真的想要 1 12 2 777 时

我知道我应该将字符 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++;
}

最佳答案

当你的代码无法工作时,你应该做的第一件事就是将其塑造成可测试的东西,并编写一个失败的测试。

我通过以下方式调整了您的代码:

  • 删除您没有解释或看起来不相关的部分(CONSTlog())
  • 对任意 Writer 进行写入,而不是硬编码 System.out

所以:

 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");
}

测试通过了——所以要么你的代码有效,要么我误解了你的要求。但是,如果您遵循这种工作方法并编写失败的测试,那么 SO 上的回答者可以更轻松地提供帮助。

关于java - 在 While 循环中创建包含字符的字符串 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40615398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com