一、求 s=a+aa+aaa+aaaa+aa…a 的值
public class Work4 {
public static void main(String[] args) {
int x = 0;
int sum = 0;
System.out.println("请输入数字a:");
Scanner inputNumber = new Scanner(System.in);
int i = inputNumber.nextInt();
System.out.println("请输入几个数字相加:");
Scanner num = new Scanner(System.in);
int j = num.nextInt();
for (int temp1 = 0;temp1 < j;temp1++)
{
for (int temp2 = 0;temp2 <= temp1 ;temp2++) {
System.out.print(i);
x = temp2;
}
if(x != j - 1 )
System.out.print( "+");
}
System.out.print("=");
for (int temp3 = 0;temp3 < j;temp3++)
{
sum += i;
i = i*10 + i;
}
System.out.print(sum);
}
二、模拟ATM机(判断字符串相等使用equals()方法)
public class Work5 {
public static void main(String[] args) {
String checkPsd = "123456789";
int flag = 0 ;
for(int i = 0 ;i < 3;i++){
System.out.println("您有" +(3-i) + "次机会");
System.out.println("请输入密码:");
Scanner psd = new Scanner(System.in);
String userPsd = psd.nextLine();
System.out.println("密码输入错误");
System.out.println();
if (userPsd.equals(checkPsd)){
System.out.println("密码正确\n账务余额:10000000$");
break;
}
flag++;
}
if (flag == 3){
System.out.println("密码输入错误,即将退出程序");
}
}
}
三、
假设某人有 100,000 现金.每经过一次路口需要进行一次交费. 交费规则为当他现金大于50,000 时每次需要交 5%如果现金小于等于 50,000 时每次交 5,000.请写一程序计算此人可以经过多少次这个路口
public class Work7 {
public static void main(String[] args) {
int count = 0;
double totalMoney = 100000;
for (;totalMoney > 0;){
if (totalMoney > 50000){
double temp = totalMoney * 0.05;
totalMoney -= temp;
}
else {
totalMoney -= 5000;
}
count++;
}
System.out.println("此人经过该路口" + count +"次");
}
}
四、检查是否为水仙花数
public class Work18 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int armNumber = sc.nextInt();
if(checkNumber(armNumber)) System.out.println(armNumber + "是水仙花数");
else System.out.println("非水仙花数");
}
public static boolean checkNumber(int num){
//检查num是否是水仙花数,如果是返回true,如果不是返回false;
if (num < 100 || num > 999){
System.out.println("水仙花数为三位数");
return false;
}
else {
//必要的括号需要加上,否则编译无法识别
if (((num % 10) * (num % 10) * (num % 10)) +
((num / 10 % 10) * (num / 10 % 10) * (num / 10 % 10)) +
((num/100) * (num/100) * (num/100)) == num ){
return true;
}
else return false;
}
}
}
五、
数组{3,1,4,6,5,9,7,8,12}
输入数字:18
得到结果:
18 = 3+6+9
18 = 6+12
18 = 1+9+8
18 = 1+4+5+8
…
本体采用笨方法,可通过先找出最小几个数字组成的和大于指定数,可知需要几个数字组合,然后几个数字组合即使用几层for循环…ps.简单有效
public class Work21 {
public static void main(String[] args) {
int arr[] = {3, 1, 4, 6, 5, 9, 7, 8, 12};
getInfo(arr,18);
}
public static void getInfo(int[] arr, int num) {
//从数组arr中找出相加等于num的数组组合,并且输出到控制台。
//如果没有找到,就输出没有解
//两个数组合
for(int i = 0;i < arr.length;i++){
int sum = 0;
sum += arr[i];
for (int j = i + 1;j<arr.length;j++){
sum += arr[j];
if(sum == num){
System.out.print(arr[i] + "+");
System.out.print(arr[j] + "=" + num);
}
else sum -= arr[j];
}
}
System.out.println();
//三个数组合
for(int i = 0;i < arr.length;i++){
int sum = 0;
sum += arr[i];
for(int j = i+1;j < arr.length;j++){
sum += arr[j];
if(sum < num){
for (int k = j + 1;k < arr.length;k++){
sum += arr[k];
if(sum == num){
System.out.print(arr[i] + "+");
System.out.print(arr[j] + "+");
System.out.print(arr[k] + "=" + num);
System.out.println();
sum -= arr[k];
}
else sum -= arr[k];
}
sum -= arr[j];
}
else sum -= arr[j];
}
}
//四个数组合
for(int i = 0;i < arr.length;i++){
int sum = 0;
sum += arr[i];
for(int j = i+1;j < arr.length;j++){
sum += arr[j];
if(sum < num){
for (int k = j + 1;k < arr.length;k++){
sum += arr[k];
if(sum < num){
for(int t = k + 1;t < arr.length;t++){
sum += arr[t];
if (sum == num)
{
System.out.print(arr[i] + "+");
System.out.print(arr[j] + "+");
System.out.print(arr[k] + "+");
System.out.print(arr[t] + "=" + num);
System.out.println();
sum -= arr[t];
}
else sum -= arr[t];
}
sum -= arr[k];
}
else sum -= arr[k];
}
sum -= arr[j];
}
else sum -= arr[j];
}
}
}
}