【笔试】8、求s=a+aa+aaa+aaaa+aa...a的值

/**
 * 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。   
 * 时间:2015年7月28日11:07:00
 * 文件:Lianxi08.java
 * 作者:cutter_point
 */
package bishi.zuixin50.t2015728;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.util.Scanner;


public class Lianxi08 
{

	public static void main(String[] args) 
	{
		FileInputStream fis = null;
		BufferedReader bis = null;
		FileOutputStream fos = null;
		Scanner cin = new Scanner(System.in);  //键盘输入
		try 
		{
			fis = new FileInputStream(new File("source/zuixin50/lianxi08input.txt"));
			bis = new BufferedReader(new InputStreamReader(fis, "utf-8"));
			fos = new FileOutputStream(new File("source/zuixin50/lianxi08output.txt"));
			String line = null;
			String[] lines = null;
			while((line = bis.readLine()) != null)
			{
				lines = line.split(" ");

				for(int i = 0; i < lines.length; ++i)
				{
					int sum = 0;	//我们数据的和
					StringBuilder sb = new StringBuilder();
					System.out.print("0 ");
					sb.append("0 ");
					//遍历所有要求的数据
					int data = Integer.parseInt(lines[i]);
					int data2 = data;
					//读取每行的数据
					int num = cin.nextInt(); //得到一个整数,表示条加的重复个数
					for(int j = 0; j < num; ++j)
					{
						//我们输入的数字是我们数字的长度,我们循环相加
						System.out.print(" + " + data2);
						sb.append(" + " + data2);
						sum += data2;	//统计当前数字的总数
						data2 = data2 * 10 + data;
					}
					//吧结果输出到文本
					System.out.println(" = " + sum);
					sb.append(" = " + sum + " \n");
					fos.write(sb.toString().getBytes());
				}
			}
		} 
		catch (Exception e) 
		{
			e.printStackTrace();
		}
		finally
		{
			try 
			{
				fos.close();
				bis.close();
				fis.close();
			} 
			catch (Exception e2) 
			{
				e2.printStackTrace();
			}
		}
	}

}

你可能感兴趣的:(笔试)