<pre name="code" class="java">/*
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
*/
import java.io.*;
class Demo
{
private Demo(){}
private static Demo d = new Demo();
public static Demo getInstance()
{
return d;
}
/*
//例如输入3,5
public long getSum(String strNum, int times)
{
if(times == 0)
{
System.out.println("0 ci Ilegal");
System.exit(0);
}
String[] arr = new String[times];
String str = new String(strNum);
char[] numChars = new char[times];
for(int i = 0; i < times; i++)
numChars[i] = str.charAt(0); //nucChars中:'3','3','3','3','3'
arr[0] = strNum;
for(int i = 1; i < times; i++)
{
arr[i] = new String(numChars, 0, i+1); //将指定长度的字符数组转变为字符串数组。
}
return getArraySum(arr);
}
// arr 中是 3, 33, 333, 3333, 33333字符串
private long getArraySum(String[] arr)
{
long sum = 0;
for(int i = 0; i < arr.length; i++)
{
sum = sum + Long.parseLong(arr[i]);
}
return sum;
}
*/
public long getSum(int num, int times)
{
long sum = 0;
long var = (long)num;
for(int i = 0; i < times; i++)
{
sum += var;
var = 10*var + num;
}
return sum;
}
public static void printFunction(Object obj)
{
System.out.print(obj.toString());
}
}
class MainClass
{
public static void main(String[] args) throws Exception
{
Demo d = Demo.getInstance();
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
String reg = "[1-9]\\s+\\d+";
String regSpt = "\\s+";
String[] arr = new String[2];
int n = 0;
int times = 0;
Demo.printFunction("输入一个1到9的数字和重复次数,用空白符分隔:\n");
for(String str = buf.readLine().trim();true; str = buf.readLine().trim())
{
if(str.isEmpty() == true)
continue;
if(str.equals("quit") == true)
System.exit(0);
if(str.matches(reg) == true)
{
arr = str.split(regSpt);
n = Integer.parseInt(arr[0]);
times = Integer.parseInt(arr[1]);
if(times != 0)
Demo.printFunction("结果为:"+d.getSum(n, times)+"\n");
else
{
Demo.printFunction("重复次数不能为0\n");
}
}
else
{
Demo.printFunction("输入一个1到9的数字和重复次数,用空白符分隔:\n");
}
}
}
}
/*
1. 写那么多来处理sum,看了答案去面壁。
*/