繁体   English   中英

在这里找到污点时我做错了什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM