Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在While循环中创建包含字符的字符串_Java_While Loop_Filereader_Filewriter - Fatal编程技术网

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

Java 在While循环中创建包含字符的字符串,java,while-loop,filereader,filewriter,Java,While Loop,Filereader,Filewriter,我制作了一个scanner程序,在这个程序中,它读取一种伪语言,并返回一个数字字符串来表示关键字、字母/带有数字的字母、数字和符号,然后返回到一个文本文件,供解析器读取 我遇到的问题是,当最初读取的文本文件中有一个数字超过一位时,它会返回如下结果: 1=字母 12=相等 2=数量 777是第一个文本中的数字 初始文本中的示例:b=777 最终文本:1127727 当我真的想要112777的时候 我知道我应该把777这个字符变成一个字符串,但我的困惑在于,当我在我发布的循环中有了这个字符时,我该如

我制作了一个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");
}