设计一个数组,当输入的正整数为n时,其中只能被3整除的赋值为Three,只能被5整除的赋值为Five,既能被3整除又能被5整除的赋值为Fifteen,其他则为数字。

试例如下,当n=16将返回:
{1,2,Three,4,Five,Three,7,8,Three,Five,11,Three,13,14,Fifteen,16}

参考代码1:

package com.gx.demo;

import java.util.Arrays;
import java.util.Scanner;

public class Test1 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);// 声明扫描仪变量
		System.out.println("请输入一个正整数:");// 系统提示输入
		int length = sc.nextInt();
		Object[] obj = new Object[length];

		for (int i = 1; i <= length; i++) {
			if (i % 3 == 0 && i % 5 == 0) {
				obj[i - 1] = "Fifteen";
			} else if (i % 3 == 0) {
				obj[i - 1] = "Three";
			} else if (i % 5 == 0) {
				obj[i - 1] = "Five";
			} else {
				obj[i - 1] = i;
			}
		}
		System.out.println(Arrays.toString(obj));// 输出结果
	}
}

输出结果:
例1:

请输入一个正整数:
16
[1, 2, Three, 4, Five, Three, 7, 8, Three, Five, 11, Three, 13, 14, Fifteen, 16]

例2:

请输入一个正整数:
abc
Exception in thread "main" java.util.InputMismatchException
	at java.util.Scanner.throwFor(Scanner.java:909)
	at java.util.Scanner.next(Scanner.java:1530)
	at java.util.Scanner.nextInt(Scanner.java:2160)
	at java.util.Scanner.nextInt(Scanner.java:2119)
	at com.gx.demo.Test4.main(Test4.java:10)

参考代码2:(处理异常)

package com.gx.demo;

import java.util.Arrays;
import java.util.Scanner;

public class Test2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);// 声明扫描仪变量
		try {
			System.out.println("请输入一个正整数:");// 系统提示输入
			int length = sc.nextInt();
			Object[] obj = new Object[length];
			for (int i = 1; i <= length; i++) {
				if (i % 3 == 0 && i % 5 == 0) {
					obj[i - 1] = "Fifteen";
				} else if (i % 3 == 0) {
					obj[i - 1] = "Three";
				} else if (i % 5 == 0) {
					obj[i - 1] = "Five";
				} else {
					obj[i - 1] = i;
				}
			}
			System.out.println(Arrays.toString(obj));// 输出结果
		} catch (Exception e) {
			//输出提示,也可以打印异常
			System.out.println("输入有误,只能输入正整数");
		}		
	}
}

输出结果:
例1:

请输入一个正整数:
16
[1, 2, Three, 4, Five, Three, 7, 8, Three, Five, 11, Three, 13, 14, Fifteen, 16]

例2:

请输入一个正整数:
abc
输入有误,只能输入正整数

参考代码3:(在参考代码2的基础上优化一下)

package com.gx.demo;

import java.util.Arrays;
import java.util.Scanner;

public class Test3 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);// 声明扫描仪变量	
		while (true) {
			try {
				System.out.println("请输入一个正整数:");// 系统提示输入
				int length = sc.nextInt();
				Object[] obj = new Object[length];
				for (int i = 1; i <= length; i++) {
					if (i % 3 == 0 && i % 5 == 0) {
						obj[i - 1] = "Fifteen";
					} else if (i % 3 == 0) {
						obj[i - 1] = "Three";
					} else if (i % 5 == 0) {
						obj[i - 1] = "Five";
					} else {
						obj[i - 1] = i;
					}
				}
				System.out.println(Arrays.toString(obj));// 输出结果
				break;//跳出循环
			} catch (Exception e) {
				//输出提示,也可以打印异常
				System.out.println("输入有误,只能输入正整数");
				sc.next();// 继续读取下一个值
			}
		}
		
	}
}

输出结果:

例1:

请输入一个正整数:
16
[1, 2, Three, 4, Five, Three, 7, 8, Three, Five, 11, Three, 13, 14, Fifteen, 16]

例2:

请输入一个正整数:
abc
输入有误,只能输入正整数
请输入一个正整数:
16
[1, 2, Three, 4, Five, Three, 7, 8, Three, Five, 11, Three, 13, 14, Fifteen, 16]

优点:
  添加了一层循环,当输入为正整数时,满足就跳出循环;当输入为非正整数时,提示错误,然后再次调用读取下一个值,直到输入为正整数时,满足再跳出循环。

参考代码4:(不推荐)

package com.gx.demo;

import java.util.Arrays;

public class Test4 {
	public static void main(String[] args) {
		test(16);
	}
	
	public static void test(int n){
        Object []arr = new Object[n];
        for (int i = 1; i <= n; i++) {
        	if (i % 3 == 0 && i % 5 == 0) {
        		arr[i - 1] = "Fifteen";
			} else if (i % 3 == 0) {
				arr[i - 1] = "Three";
			} else if (i % 5 == 0) {
				arr[i - 1] = "Five";
			} else {
				arr[i - 1] = i;
			}
        }
        System.out.print(Arrays.toString(arr));
       /* for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+",");
            //1,2,Three,4,Five,Three,7,8,Three,Five,11,Three,13,14,Fifteen,16,
        }*/
    }
}

输出结果:

[1, 2, Three, 4, Five, Three, 7, 8, Three, Five, 11, Three, 13, 14, Fifteen, 16]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章