[英]What I am doing wrong while finding the blotted part here?
问题描述:吉米在小学二年级时是一个努力的学生。 最近,他决定将所有笔记转换成电子版本。 可悲的是,他发现自己的数学笔记上满是墨水斑点。
他扫描了便笺,并通过自己的OCR包发送了便笺(是的,他在8岁时就亲自对它们进行了编码)。 OCR包装用字符串“ machula”代替了所有墨水印迹。
问题说明
由OCR处理的是吉米的笔记。 它们包含简单的数学练习,用于对正整数进行加法运算。 您的任务是恢复笔记的损坏部分。
输入规格
输入文件的第一行包含一个整数T,它指定测试用例的数量。 每个测试用例前都有一个空白行。
每个测试用例仅由一行组成。 该行表示形式为“数字+数字=数字”的方程式,其中每个数字均为正整数。 等式的一部分将由字符串“ machula”代替。 字符串始终包含连续的非空数字序列,甚至可能是整数。 您可以假设对于输入中的每个方程式,只有一种方法可以填写缺失的数字。
输出规格
对于每个测试用例,输出应包含一行,格式为“数字+数字=数字”。 该行必须表示该测试用例的等式,并填写所有缺少的数字。
例
输入:
3
23 + 47 = machula
3247 + 5machula2 = 3749
machula13 + 75425 = 77038
输出:
23 + 47 = 70
3247 + 502 = 3749
1613 + 75425 = 77038
码:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
class Main{
public static void main(String[] args) throws Exception {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
int t=Integer.parseInt(br.readLine());
while(t-->0)
{
br.readLine();
String s = br.readLine();
System.out.println("");
int eq_n=s.indexOf("=");
int plus_n=s.indexOf("+");
int machula=s.indexOf("machula");
if(machula>eq_n)
{
int num1=Integer.parseInt(s.substring(0, plus_n-1));
int num2=Integer.parseInt(s.substring(plus_n+2, eq_n-1));
out.write(String.valueOf(num1)+" + "+String.valueOf(num2)+" = "+String.valueOf(num1+num2)+"\n");
}
else
{
if(machula>plus_n)
{
int num1=Integer.parseInt(s.substring(0, plus_n-1));
int num2=Integer.parseInt(s.substring(eq_n+2));
out.write(String.valueOf(num1)+" + "+String.valueOf(num2-num1)+" = "+String.valueOf(num2)+"\n");
}
else if(machula<plus_n)
{
int num1=Integer.parseInt(s.substring(plus_n+2, eq_n-1));
int num2=Integer.parseInt(s.substring(eq_n+2));
out.write(String.valueOf(num2-num1)+" + "+String.valueOf(num1)+" = "+String.valueOf(num2)+"\n");
}
}
}
out.flush();
out.close();
}
}
问题链接: http : //www.spoj.com/problems/ABSYS/
我只运行了您的代码,它为我打印了指定的输出。 我对您的代码所做的唯一一件事就是使其从文件中读取,而不是从System.in中读取。
所以代替
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
做这个:
BufferedReader br = new BufferedReader(new FileReader(new File("C:/machula.txt")));
当然,请确保C:/machula.txt存在并且包含您的输入值。 另外,我删除了System.out.prinln(“”),这导致在输出中打印空白行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.