关于转移代码的问题,我应该使用什么方法?



问题解释:正如一些评论所建议的那样,我会尽力使这个问题更清晰。输入来自文件,代码只是一个示例。假设代码应该适用于该格式的任何输入。我知道我需要使用Scanner来读取文件。问题是我使用什么代码来获取输出。

输入规范: 输入的第一行包含数字 N,即后面的行数。下一个 N 行将至少包含一个且最多 80 个字符,其中没有一个是空格。

输出规格: 输出将为 N 行。输出的第 i 行将是输入的行 i + 1 的编码。 一行的编码将是一系列对,用空格分隔,其中每对都是一个 整数(表示字符连续出现的次数(,后跟一个空格, 后跟角色。

Sample Input
4
+++===!!!!
777777......TTTTTTTTTTTT
(AABBC)
3.1415555
Output for Sample Input
3 + 3 = 4 !
6 7 6 . 12 T
1 ( 2 A 2 B 1 C 1 )
1 3 1 . 1 1 1 4 1 1 4 5

到目前为止,我只发布了两个问题,我不太明白"好"问题和"坏"问题的标准?有人可以解释为什么这是一个糟糕的问题吗?欣赏它!

完整的工作代码在这里尝试一下。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class CharTask {
public static void main(String[] args) {
List<String> lines = null;
try {
File file = new File("inp.txt");
FileInputStream ins =new FileInputStream(file);
Scanner scanner  = new Scanner(ins);
lines = new ArrayList<String>();
while(scanner.hasNext()) {
lines.add(scanner.nextLine());
}

List<String> output = processInput(lines);
for (int i=1;i<output.size(); i++) {
System.out.println(output.get(i));
}

scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}

}

private static List<String> processInput(List<String> lines){

List<String> output = new ArrayList<String>();
for (String line: lines) {
output.add(getProcessLine(line));
}

return output;


}

private static String getProcessLine(String line) {
if(line.length() == 0) {
return null;
}

String output = "";
char prev = line.charAt(0);
int count = 1;
for(int i=1;i<line.length();i++) {

char c = line.charAt(i);
if (c == prev) {
count = count +1;
}
else {
output = output + " "+count + " "+prev;
prev = c;
count = 1;
}
}
output = output + " "+count+" "+prev; 

return output;
}


}

输入

(.txt(

4
+++===!!!!
777777......TTTTTTTTTTTT
(AABBC)
3.1415555

输出

3 + 3 = 4 !
6 7 6 . 12 T
1 ( 2 A 2 B 1 C 1 )
1 3 1 . 1 1 1 4 1 1 4 5

您需要解决两个不同的问题,我认为它将帮助您分别解决它们。首先是读取输入。我不清楚您是否要提示它,以及它是来自控制台还是文件,或者究竟是什么。为此,您需要初始化一个扫描程序,使用 nextInt 获取行数,调用 nextLine(( 清除该行的其余部分,然后运行从 0 到行数的 for 循环,将下一行(使用 nextLine(((读取到字符串变量中。为了确保它运行良好,我建议打印出未更改的字符串,看看出来的东西是否是进来的。

另一个任务是将给定的输入字符串转换为所需的输出字符串。您可以独立处理,然后稍后将事情重新组合在一起。您将需要一个接受字符串并返回字符串的方法。您可以通过传递示例字符串并查看它是否返回所需的输出字符串来测试它。设置结果="。使用 charAt 循环访问字符串中的字符,它将需要 currentCharacter 和 currentCount 的变量,当字符更改或遇到字符串末尾时,将数字和字符连接到字符串上,并根据需要重置字符计数和当前字符。在循环之外,返回结果。

解决这两个任务后,通过打印出方法为输入字符串返回的内容而不是输入字符串本身将它们组合在一起。

我认为这为您提供了使用方法的方向。这不是一个成熟的解决方案,但这不是您要求或需要的。

相关内容

最新更新