当前位置:   article > 正文

JAVA面向对象编程题_0、从键盘上输入两个数,计算第一个数除以第二个数人结果,要求用异常处理的

0、从键盘上输入两个数,计算第一个数除以第二个数人结果,要求用异常处理的

1.给我一个字符串,例如I love java,输出: java love I

  1. public class StringReverse {
  2. public void swap(char[] arr, int begin, int end) {
  3. while(begin < end) {
  4. char temp = arr[begin];
  5. arr[begin] = arr[end];
  6. arr[end] = temp;
  7. begin++;
  8. end--;
  9. }
  10. }
  11. //I love java
  12. public String swapWords(String str) {
  13. char[] arr = str.toCharArray();
  14. swap(arr, 0, arr.length - 1);
  15. int begin = 0;
  16. for (int i = 1; i < arr.length; i++) {
  17. if (arr[i] == ' ') {
  18. swap(arr, begin, i - 1);
  19. begin = i + 1;
  20. }
  21. }
  22. swap(arr, begin, arr.length-1);
  23. return new String(arr);
  24. }
  25. public static void main(String[] args) {
  26. String str = "I love java";
  27. System.out.println(new StringReverse().swapWords(str));
  28. }
  29. }

 

 

1.输入一个正数n,输出所有和为n的连续正数序列。

分析:设定两个指针,min指向和为n的连续正数序列的最小值,max指向和为n的连续正数序列最大值。sum表示真正的和。
初始情况下,min、max和sum 都指向1.
当sum小于n时,max++;
当sum大于n时,min++;
当sum等于n时,输出整个序列。

  1. public class a {
  2. public static void getAns(int n) {
  3. int min = 1;
  4. int sum = 1;
  5. int max = 1;
  6. while(min <= n/2+1) {
  7. if(sum == n) {
  8. for(int k = min; k<=max; k++) {
  9. System.out.println(k+"");
  10. }
  11. System.out.println();
  12. sum = sum - min;
  13. min ++;
  14. max ++;
  15. sum = sum+max;
  16. }
  17. if(sum > n) {
  18. sum = sum - min;
  19. min ++;
  20. } else {
  21. max ++;
  22. sum = sum + max;
  23. }
  24. }
  25. }
  26. public static void main(String[] args) {
  27. getAns(15);
  28. }}

2.给定一个排好序的链表,删除链表中重复的结点,返回链表头指针。

分析:(1)链表中重复的结点不需要保留一个,要全部删除。
(2)因为相同的结点全部要删除,所以我们设定三个指针,node指向当前节点,prev指向前驱,还有一个指向后继结点。一旦遇到node和后继结点相等,就node++,知道没有重复的再移动prev.
(3)注意:头结点也可能有重复,所以也可能被删除,所以需要定义一个root指向头结点。

  1. public class a {
  2. // 结点定义,包括当前结点的值和next指向
  3. private static class ListNode {
  4. private int val;
  5. private ListNode next;
  6. public ListNode() {
  7. }
  8. public ListNode(int val) {
  9. this.val = val;
  10. }
  11. public String toString() {
  12. return val + "";
  13. }
  14. }
  15. // 删除节点的函数
  16. public static ListNode delete(ListNode head) {
  17. if (head == null)
  18. return null;
  19. if (head.next == null)
  20. return head;
  21. // 定义一个临时的头结点,因为头结点也可能被删除
  22. ListNode root = new ListNode();
  23. root.next = head;
  24. ListNode prev = root;
  25. ListNode node = head;
  26. while (node != null && node.next != null) {
  27. if (node.val == node.next.val) {
  28. //若有连续相同的结点,则node要一直++
  29. while (node.next != null && node.next.val == node.val)
  30. node = node.next;
  31. prev.next = node.next;
  32. } else {
  33. prev.next = node;
  34. prev = prev.next;
  35. }
  36. node = node.next;
  37. }
  38. return root.next;
  39. }
  40. //打印出来删除后的结果
  41. private static void print(ListNode head) {
  42. while (head != null) {
  43. System.out.print(head + "->");
  44. head = head.next;
  45. }
  46. System.out.println("null");
  47. }
  48. public static void main(String[] args) {
  49. // 按照结点的定义新建一个链表
  50. ListNode n1 = new ListNode(1);
  51. ListNode n2 = new ListNode(1);
  52. ListNode n3 = new ListNode(2);
  53. ListNode n4 = new ListNode(2);
  54. ListNode n5 = new ListNode(2);
  55. ListNode n6 = new ListNode(3);
  56. ListNode n7 = new ListNode(5);
  57. n1.next = n2;
  58. n2.next = n3;
  59. n3.next = n4;
  60. n4.next = n5;
  61. n5.next = n6;
  62. n6.next = n7;
  63. n7.next = null;
  64. //调用delete函数,传入n1的值,当成头结点
  65. ListNode result = delete(n1);
  66. print(result);
  67. }
  68. }

3.对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。
给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
分析:重点在返回第一次出现的位置。

  1. public class c {
  2. public static int getPos(int[] A, int n, int val) {
  3. int low = 0, high = n - 1, mid;
  4. if (n == 0 || A == null)
  5. return -1;
  6. while (low <= high) {
  7. mid = (low + high) / 2;
  8. //当第一次找出相等的位置后需要继续向前查找,最后返回第一次出现的位置
  9. if (val == A[mid]) {
  10. for(int j = mid; j >= 0; j--) {
  11. if(A[j] != A[mid]) {
  12. mid = j + 1;
  13. break;
  14. }
  15. else if(A[j] == A[mid]) {
  16. mid = j;
  17. continue;
  18. }
  19. }
  20. return mid;
  21. } else if (val < A[mid])
  22. high = mid - 1;
  23. else
  24. low = mid + 1;
  25. }
  26. return -1;
  27. }
  28. public static void main(String[] args) {
  29. int A[] = { 4, 4, 5, 5, 5, 5 };
  30. int val = 4;
  31. int n = A.length;
  32. int result = getPos(A, n, val);
  33. System.out.println(result);
  34. }
  35. }

4.对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。
给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。

方法1:这是前辈给出的算法,利用HashSet的特性,即不允许重复放入元素,所以一旦检测到重复元素就返回false。对于本道题来说,这种方法简洁且容易理解,能高效实现功能,但是这种方法普适性较差。

  1. import java.util.HashSet;
  2. public class g {
  3. public static char findFirstRepeat(String A, int n) {
  4. HashSet hs=new HashSet();
  5. int length=A.length();
  6. //利用toCharArray()将String类型转化为char类型
  7. char[] a=A.toCharArray();
  8. for(int i=0;i < length;i++)
  9. {
  10. boolean b=hs.add(a[i]);//通过往hashset塞值(hashset不准有重复元素),判断当前一段数据中是否有重复元素,一但有,立刻返回
  11. if(b==false)
  12. {
  13. return a[i];
  14. }
  15. }
  16. return'0';
  17. }
  18. public static void main(String[] args) {
  19. String A = "qywyer23tdd";
  20. int n = A.length();
  21. char b = findFirstRepeat(A, n);
  22. System.out.println(b);
  23. }
  24. }

方法2:利用了哈希存储,将给定字符串以键值对形式存储在哈希Map中,key就是每一个字符,value就是每个字符出现的次数。存好后再按顺序遍历Map,找出第一次出现次数不为1的即可。返回。
注意:基于hash的存储是很高效的一种方式,存储键值对方便查找,可以根据key查找value,或者根据value查找key,或者查找特殊的字符等。

延伸:返回第一个只出现一次的字符,返回最后一个出现次数不为1的字符,返回所有出现次数为1的字符或者出现次数不为1的字符,返回给定出现次数的字符等等。

  1. import java.util.ArrayList;
  2. import java.util.LinkedHashMap;
  3. import java.util.List;
  4. import java.util.Map;
  5. import java.util.Map.Entry;
  6. public class g {
  7. private static void findFirstRepeat(String A, int n) {
  8. int sum = 1;//新插入的key-value给value赋初始值都为1
  9. //用LinkedHashMap来存储键值对
  10. //HashMap插入和输出顺序不一样
  11. //但LinkedHashMap插入和输出顺序相同,即先存的先显示,也就是尾插
  12. //HashSet要求不能存重复元素,但HashMap和LinkedHashMap可以存重复元素。
  13. Map<String, Integer> hashMap = new LinkedHashMap
  14. <String, Integer>();
  15. for (int i = 0; i < n; i++) {
  16. //将main中传过来的String类型参数一个字符一个字符的转化为char类型,方便处理。
  17. char item = A.charAt(i);
  18. //再将每一个char类型的字符转化为String类型。这一步操作和上一步操作作用是分离出每一个字符。
  19. String item2 = String.valueOf(item);
  20. String key = item2;
  21. // 判断是否包含指定的键值
  22. boolean contains = hashMap.containsKey(key);
  23. if (contains) { // 如果条件为真
  24. sum++;
  25. hashMap.put(item2, sum);// 输出信息
  26. } else {
  27. sum = 1;
  28. hashMap.put(item2, sum);
  29. }
  30. }
  31. //输出存进哈希表中的所有键值对
  32. System.out.println(hashMap);
  33. //以下是通过给定的value值反查key的过程
  34. //将所有的键值对存在一个entrySet中
  35. //遍历entrySet,若找到value等于给定的value值,则将其对应key值存在keyList中。
  36. List<String> keyList = new ArrayList<String>();
  37. for (Entry<String, Integer> e : hashMap.entrySet()) {
  38. if (MathUtil.compare(e.getValue(),2) >= 0) {
  39. keyList.add(e.getKey());
  40. }
  41. }
  42. //最后遍历keyList,输出第一次出现的key即可。
  43. for (String i : keyList) {
  44. System.out.println(i);
  45. break;
  46. }
  47. }
  48. public static void main(String[] args) {
  49. String A = "qywyer2333333333tdd";
  50. int n = A.length();
  51. findFirstRepeat(A, n);
  52. }
  53. }

关于类型转化问题:

  1. (1)String---------》char / char[ ]
  2. String str = "ab";
  3. char str1 = str.charAt(0); //得到a
  4. char str2 = str.charAt(1); //得到b
  5. char[ ] str3 = str.toCharArray();
  6. System.out.println (Arrays.toString(str3));
  7. (2)char / char[]-----------》String
  8. char m = 'a';
  9. String str = String.valueOf(m);
  10. String str2 = m + " ";
  11. char[] m = {'a','b'};
  12. String str3 = String.copyValueOf(m);
  13. String str4 = new String(m);
  14. (3)int -----------》 String
  15. int i;
  16. String s = String.valueOf(i);
  17. String s = Integer.toString(i);
  18. String s = "" + i;
  19. (4)String ----------》 int
  20. int i = Integer.parseInt([String]);
  21. i = Integer.parseInt([String],[int radix]);
  22. int i = Integer.valueOf(my_str).intValue();

关于哈希存储的处理方案(本人亲试!) :

  1. (1)根据key来查找,判断是否包含给定的key
  2. boolean contains = hashMap.containsKey(key);
  3. if (contains) { // 如果条件为真
  4. System.out.println("存在"+key);
  5. } else {
  6. System.out.println("不存在" + key);
  7. }
  8. (2)根据value来查找,判断是否包含给定的value.
  9. boolean contains = hashMap.containsValue(Value);
  10. if (contains) { // 如果条件为真
  11. System.out.println("存在"+value);
  12. } else {
  13. System.out.println("不存在" +value);
  14. }
  15. (3)利用keySet遍历所有的key值。
  16. for (Object key : hashMap.keySet()) {
  17. System.out.println("key= " + key + " value " + hashMap.get(key));
  18. }

 

1.合并两个排序的链表
思路:定义两个指针,一个指向list1,一个指向List2,定义一个新链表,List1和list2中哪个小就复制到新链表中。注意判断list1和list2是否为空!!!
本题是利用递归来实现的。

  1. /*
  2. public class ListNode {
  3. int val;
  4. ListNode next = null;
  5. ListNode(int val) {
  6. this.val = val;
  7. }
  8. }*/
  9. public class Solution {
  10. public ListNode Merge(ListNode list1,ListNode list2) {
  11. if(list1 == null) {
  12. return list2;
  13. }
  14. if(list2 == null) {
  15. return list1;
  16. }
  17. ListNode s = null;
  18. if(list1.val < list2.val) {
  19. s = list1;
  20. s.next = Merge(list1.next, list2);
  21. } else if(list1.val >= list2.val) {
  22. s = list2;
  23. s.next = Merge(list1, list2.next);
  24. }
  25. return s;
  26. }
  27. }

处理二进制问题:
两个int32整数m和n的二进制表达,有多少个位(bit)不同么?
(1)m^n后,将结果赋值给一个String类型的变量,循环遍历变量的每一位,看是否等于1.
(2)m^n后,将二进制结果的最后一位&1,然后将二进制右移。

  1. public class Solution {
  2. /**
  3. * 获得两个整形二进制表达位数不同的数量
  4. *
  5. * @param m 整数m
  6. * @param n 整数n
  7. * @return 整型
  8. */
  9. public int countBitDiff(int m, int n) {
  10. int x = m^n;
  11. int y = 0;
  12. while(x>0) {
  13. if((x&1) == 1) {
  14. y+=1;
  15. }
  16. x= x>>1;
  17. }
  18. return y;
  19. }
  20. }

水仙花问题:水仙花,即给定一个三位数,每一位的数字立方加起来等于这个数本身。
解析:

  1. import java.util.Scanner;
  2. public class Solution {
  3. public static void main(String[] args) {
  4. Scanner san = new Scanner(System.in);
  5. //从键盘输入最小值
  6. int min = san.nextInt();
  7. //从键盘输入最大值
  8. int max = san.nextInt();
  9. for(int mid = min; mid < max; mid++) {
  10. int a = mid/100;
  11. int b = mid%10;
  12. int c = mid%100/10;
  13. int sum = a*a*a + b*b*b + c*c*c;
  14. if(sum == mid) {
  15. System.out.println(mid);
  16. }
  17. }
  18. }
  19. }

题目:从键盘输入m和n,定义n是第一个数,之后的每个数都是前一个的平方根
,一共有m个数,计算总和。

  1. import java.lang.Math;
  2. import java.util.Scanner;
  3. public class a {
  4. public static void main(String[] args) {
  5. //求平方根
  6. Scanner scan = new Scanner(System.in);
  7. float n = scan.nextFloat();
  8. int m = scan.nextInt();
  9. float sum = n;
  10. for(int i=2;i<=m;i++) {
  11. sum += Math.sqrt(n);
  12. n = (float) Math.sqrt(n);
  13. }
  14. System.out.println("sum=" +sum);
  15. }
  16. }

题目:Java的一维数组在不知道长度的情况下怎样声明?

(1) 不知道长度,所以不能直接声明大小
  •  
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4. public class a {
  5. public static void main(String[] args) {
  6. //用ArrayList来实现添加数据
  7. List<Integer> list = new ArrayList<Integer>();
  8. Scanner scanner = new Scanner(System.in);
  9. System.out.println("请输入数组");
  10. //给定一个while循环
  11. //保证输入一串数字,直接接收,并添加到list中,当输入0时结束输入
  12. while(true) {
  13. int a = scanner.nextInt();
  14. if(a==0) {
  15. break;
  16. } else {
  17. list.add(a) ;
  18. }
  19. }
  20. int size = list.size();
  21. //将list转成int型数组
  22. Integer[] array = (Integer[])list.toArray(new Integer[size]);
  23. //输出int型数组。
  24. for(int i=0;i<array.length;i++){
  25. System.out.print(array[i]+" ");
  26. }
  27. }
  28. }

这样就得到一个从键盘输入的Int型数组,接下来就可以对数组进行各种操作。
符合一般情况下的需要多组测试用例的情况。

题目:给定一个正整数,编写程序计算有多少对质数的和等于这个输入的正整数,并输出结果,输出值小于1000.
测试用例:
输入:10
输出:2 ((3,7) 和(5,5))。

  1. import java.util.Scanner;
  2. public class cc {
  3. private static int cout(int number) {
  4. int count = 0;
  5. for (int i = 2; i < number; i++) {
  6. for (int j = 2; j <= number / 2; j++) {
  7. if (isPrime(i) && isPrime(j) && (i + j) == number) {
  8. count++;
  9. }
  10. }
  11. }
  12. return count;
  13. }
  14. public static void main(String[] args) {
  15. Scanner scanner = new Scanner(System.in);
  16. System.out.println("请输入给定的数字");
  17. int a = scanner.nextInt();
  18. int count = cout(a);
  19. System.out.println("count=" + count);
  20. }
  21. public static boolean isPrime(int number) {
  22. if (number < 2) {
  23. return false;
  24. }
  25. for (int i = 2; i < number; i++) {
  26. if (number % i == 0) {
  27. return false;
  28. } else {
  29. continue;
  30. }
  31. }
  32. return true;
  33. }
  34. }

2 . 题目:二分查找,在左区间输出0,右区间输出1.
逐渐逼近,保留6位。
注意特殊输入:
(1) key值小于输入临界最小值或者大于临界最大值。
(2) 临界最小值大于临界最大值。
(3) 两个临界值都为0,输出0。

  1. import java.util.Scanner;
  2. public class cc {
  3. public static int comp(int key, int num) {
  4. if (key >= num) {
  5. return 1;
  6. } else {
  7. return 0;
  8. }
  9. }
  10. public static void main(String[] args) {
  11. Scanner scanner = new Scanner(System.in);
  12. System.out.println("请输入最小临界值");
  13. int a = scanner.nextInt();
  14. System.out.println("请输入最大临界值");
  15. int b = scanner.nextInt();
  16. System.out.println("请输入需要比较的值");
  17. int key = scanner.nextInt();
  18. if (key < a || key > b) {
  19. System.out.println("error");
  20. } else if (key == 0 && a == 0 && b == 0) {
  21. System.out.println("error");
  22. } else {
  23. while (a <= b) {
  24. for (int i = 0; i < 6; i++) {
  25. int num;
  26. num = (a + b) / 2;
  27. System.out.println("num=" + num);
  28. int s = comp(key, num);
  29. if (s == 0) {
  30. b = num;
  31. System.out.println("0");
  32. } else {
  33. a = num;
  34. System.out.println("1");
  35. }
  36. }
  37. break;
  38. }
  39. }
  40. }
  41. }

题目:镜像字符串,给定两个字符串,判断第二个是否为第一个的镜像字符串,是返回yes,否返回no.

  1. import java.util.Scanner;
  2. public class b {
  3. public static Boolean count(String str1, String str2) {
  4. int p1 = 0;
  5. int p2 = 0;
  6. char[] st1 = str1.toCharArray();
  7. char[] st2 = str2.toCharArray();
  8. for (int i = 0; i < st1.length; i++) {
  9. if (st1[i] == st2[0]) {
  10. p1 = i;
  11. }
  12. }
  13. while (p1 < st1.length && p2 < st2.length) {
  14. if (st1[p1] == st2[p2]) {
  15. if (p1 == st1.length) {
  16. p1 = -1;
  17. }
  18. p1++;
  19. p2++;
  20. continue;
  21. } else {
  22. return false;
  23. }
  24. }
  25. return true;
  26. }
  27. public static void main(String[] args) throws Exception {
  28. Scanner scanner = new Scanner(System.in);
  29. System.out.println("请输入字符串");
  30. String str1 = scanner.next();
  31. String str2 = scanner.next();
  32. if(str1.length()-str2.length()!=0) {
  33. System.out.println("no");
  34. return;
  35. }
  36. if (str1 == null || str1.length() <= 0 || str2 == null
  37. || str2.length() <= 0) {
  38. System.out.println("error");
  39. }
  40. Boolean num = count(str1, str2);
  41. if (num.equals(true)) {
  42. System.out.println("yes");
  43. } else {
  44. System.out.println("no");
  45. }
  46. }
  47. }

 

1、编写程序实现对给定的 4 个整数从大到小的顺序排列。

  1. <strong>package HomeWork01;
  2. import java.util.Scanner;
  3. public class HomeWork01 {
  4. static int number=4; //输入4个数存放在数组中
  5. static int[] t1 = new int[number];
  6. public static void main(String[] args) {
  7. HomeWork01 jiejie=new HomeWork01();
  8. jiejie.shunxun();
  9. }
  10. void shunxun(){
  11. System.out.println("请输入4个数:");
  12. Scanner in_t1 = new Scanner(System.in);//循环输入数组
  13. for(int i=0;i<number;i++){
  14. t1[i]=in_t1.nextInt();}
  15. for (int i = 0; i < t1.length; i++) {
  16. int pos = i;
  17. for (int j = i + 1; j < t1.length; j++) {
  18. if (t1[pos] > t1[j])
  19. pos = j;
  20. }
  21. if (pos != i) {
  22. t1[i] = t1[i] + t1[pos];
  23. t1[pos] = t1[i] - t1[pos];
  24. t1[i] = t1[i] - t1[pos];
  25. }
  26. }
  27. for (int i = t1.length - 1; i >= 0; i--)
  28. System.out.print(t1[i] + "\t");
  29. }
  30. }
  31. </strong>

 

2、编写程序求一元二次方程的根。

  1. <strong>package HomeWork02;
  2. import java.util.Scanner;
  3. public class HomeWork02
  4. //△=b^2-4ac的值,若△小于0,一元二次方程无根.若△等于0,一元二次方程有两个相等的根.若△大于0,一元二次方程有两个不相等的实数根
  5. {
  6. public static void main(String [] args){
  7. Scanner sc = new Scanner(System.in);
  8. System.out.println("输入2次方的系数");
  9. int a = sc.nextInt();
  10. System.out.println("输入1次方的系数");
  11. int b = sc.nextInt();
  12. System.out.println("输入0次方的系数");
  13. int c = sc.nextInt();
  14. if((b*b - 4*a*c)<0){ // 判断方程是否有解
  15. System.out.println("方程无解!");
  16. return;
  17. }
  18. else{
  19. System.out.println("方程有解!");
  20. }
  21. double x1 = (-b + Math.sqrt(b*b - 4*a*c))/2*a;
  22. double x2 = (-b - Math.sqrt(b*b - 4*a*c))/2*a;
  23. System.out.println("根分别是 " + x1 + "\t" + x2);
  24. }
  25. }
  26. </strong>

 

 

3、编写程序,输入一个字符,判断它是否为小写字母,如果是,将它转换成大

写字母,否则,不转换。

  1. <strong>package HomeWork03;
  2. import java.util.Scanner;
  3. public class HomeWork03 {
  4. public static void main(String[] args) {
  5. //小写字母的ascll值为97-122
  6. //大写字母的ascll值为65-90
  7. System.out.println("请输入一个字母:\n");
  8. Scanner input = new Scanner(System.in);
  9. char zimu=input.next().charAt(0);
  10. if (zimu>=97&&zimu<=122){ //判断是否是小写字母
  11. System.err.println("该字母是小写字母");
  12. zimu=(char) (zimu-32); //如果是小写字母则 将其转换成大写字母
  13. System.err.println("转换之后的大写字母是:"+zimu);
  14. }
  15. else{
  16. System.out.println("该字母不是小写字母!");
  17. }
  18. }
  19. }
  20. </strong>

 

4、输入 3 个正数,判断能否构成一个三角形。

  1. <strong>package HomeWork04;
  2. import java.util.Scanner;
  3. public class HomeWork04 {
  4. public static void main(String [] args){
  5. int a;
  6. int b;
  7. int c;
  8. System.out.println("请输入三个正整数:");
  9. Scanner in=new Scanner(System.in);
  10. a=in.nextInt();
  11. b=in.nextInt();
  12. c=in.nextInt();
  13. if(a<=0||b<=0||c<=0)
  14. {
  15. System.out.println("输入的必须是正整数!");
  16. }
  17. if((a+b)>c&&(a+c)>b&&(b+c)>a)
  18. {
  19. System.out.println("能构成三角形!");
  20. }
  21. else{
  22. System.out.println("不能构成三角形!");
  23. }
  24. }
  25. }
  26. </strong>

 

5、编写程序,对输入的年、月、日,给出该天是该年的第多少天?

  1. <strong>package HomeWork05;
  2. import java.util.Scanner;
  3. public class HomeWork05 {
  4. public static void main(String[]args){
  5. Scanner sc =new Scanner(System.in);
  6. System.out.print("年");
  7. int year=sc.nextInt();
  8. System.out.print("月");
  9. int month=sc.nextInt();
  10. System.out.print("日");
  11. int day=sc.nextInt();
  12. int days=0;
  13. switch(month){
  14. case 12:days+=30;
  15. case 11:days+=31;
  16. case 10:days+=30;
  17. case 9:days+=31;
  18. case 8:days+=31;
  19. case 7:days+=30;
  20. case 6:days+=31;
  21. case 5:days+=30;
  22. case 4:days+=31;
  23. case 3:
  24. if((year%4==0&&year%100!=0)||(year%400==0)){
  25. days+=29;
  26. }
  27. else{
  28. days+=28;
  29. }
  30. case 2:days+=31;
  31. case 1:days+=day;
  32. }
  33. System.out.print("第" + days + "天");
  34. }
  35. }
  36. </strong>

 

6、编写程序,从键盘输入一个 0~99999 之间的任意数,判断输入的数是几位

数?

  1. <strong>package HomeWork06;
  2. import java.util.Scanner;
  3. public class HomeWork06 {
  4. public static void main(String[]args){
  5. Scanner sc =new Scanner(System.in);
  6. System.out.print("请输入一个0~99999 之间的任意数");
  7. int number=sc.nextInt();
  8. if(number/10000>=1&&number/10000<10){
  9. System.out.println(number+"\t是5位数");
  10. }
  11. else if(number/1000>=1){
  12. System.out.println(number+"\t是4位数");
  13. }
  14. else if(number/100>=1){
  15. System.out.println(number+"\t是3位数");
  16. }
  17. else if(number/10>=1){
  18. System.out.println(number+"\t是2位数");
  19. }
  20. else if(number/1>=1){
  21. System.out.println(number+"\t是1位数");
  22. }
  23. }
  24. }
  25. </strong>

 

7、编写程序,给定一个学生成绩,给出相应等级:

90~100 优秀

80~89 良好

70~79 中等

60~69 及格

0~59 不及格

  1. <strong>package HomeWork07;
  2. import java.util.Scanner;
  3. public class HomeWork07 {
  4. public static void main(String[] args) {
  5. HomeWork07 jiejie=new HomeWork07();
  6. jiejie.chengjie();
  7. }
  8. void chengjie(){
  9. Scanner sc = new Scanner(System.in);
  10. System.out.println("请输入学生成绩:");
  11. int a = sc.nextInt();
  12. if(a>=90&&a<=100){
  13. System.out.println("该学生的成绩是"+a+"\t成绩优秀");
  14. }
  15. else if(a>=80&&a<90){
  16. System.out.println("该学生的成绩是"+a+"\t成绩良好");
  17. }
  18. else if(a>=70&&a<80){
  19. System.out.println("该学生的成绩是"+a+"\t成绩中等");
  20. }
  21. else if(a>=60&&a<70){
  22. System.out.println("该学生的成绩是"+a+"\t成绩及格");
  23. }
  24. else{
  25. System.out.println("该学生的成绩是"+a+"\t成绩不及格");
  26. }
  27. }
  28. }
  29. </strong>

 

8、编写程序,对输入的一个整数,按相反顺序输出该数。例如,输入为 3578,

输出为 8753。

  1. <strong>package HomeWork08;
  2. import java.util.Scanner;
  3. public class HomeWork08 {
  4. public static void main(String[]args){
  5. Scanner sc =new Scanner(System.in);
  6. System.out.println("请输入一个整数:");
  7. int read = sc.nextInt();
  8. //方法一 reverse()API
  9. System.out.println("方法一:");
  10. StringBuilder sb = new StringBuilder(String.valueOf(read));
  11. System.out.println(sb.reverse());
  12. //方法二 将字符串转换成字符数组,反序输出
  13. String str= read +"";
  14. char fuzu[]=str.toCharArray();
  15. String temp="";
  16. for(int a=fuzu.length-1;a>=0;a--){
  17. temp=temp+fuzu[a];
  18. }
  19. System.out.println("方法二:");
  20. System.out.println(temp);
  21. }
  22. }
  23. </strong>

 

9、用 while 循环,计算 1~200 之间所有 3 的倍数之和。

  1. <strong>package HomeWork09;
  2. public class HomeWork09 {
  3. public static void main(String[] args) {
  4. // 用while循环,计算1~200之间所有3的倍数之和。
  5. int a=1;
  6. int sum=0;
  7. while(a<=200){
  8. if(a%3==0){
  9. sum=sum+a;
  10. }
  11. a++;
  12. }
  13. System.out.println("1~200之间所有3的倍数之和为:"+sum);
  14. }
  15. }
  16. </strong>

 

10、编写程序,输出 200~500 之间的所有素数。

  1. <strong>package HomeWork10;
  2. public class HomeWork10 {
  3. public static void main(String[] args) {
  4. int num=200;
  5. while (num<=500) {
  6. boolean tag=true; //素数标记
  7. for(int d=2;d<=num-1;d++){
  8. if(num % d==0){
  9. tag=false;
  10. break;
  11. }
  12. }
  13. if(tag){ //如果是素数
  14. System.out.println(num);
  15. }
  16. num++;
  17. }
  18. }
  19. }
  20. </strong>

 

11、编写程序解决“百钱买百鸡”问题。公鸡五钱一只,母鸡三钱一只,小鸡

一钱三只,现有百钱欲买百鸡,共有多少种买法?

  1. <strong>package HomeWork11;
  2. public class HomeWork11 {
  3. public static void main(String[] args) {
  4. /* 、编写程序解决“百钱买百鸡”问题。
  5. * 公鸡五钱一只,母鸡三钱一只,
  6. * 小鸡 一钱三只,
  7. * 现有百钱欲买百鸡,共有多少种买法? */
  8. for(int g=0;g<=20;g++){
  9. for(int m=0;m<=33;m++){
  10. for(int x=0;x<=100-g-m;x++){
  11. if(x % 3==0 && 5*g+m*3+x/3 == 100 && g+m+x ==100){
  12. System.out.println("公鸡"+g+"只母鸡"+m+"只小鸡"+x+"只");
  13. }
  14. }
  15. }
  16. }
  17. }
  18. }
  19. </strong>

 

12、使用循环语句输出下面的图形。

#

# # #

# # # # #

# # # # # # #

# # # # # # # # #

  1. <strong>package HomeWork12;
  2. public class HomeWork12 {
  3. public static void main(String[] args) {
  4. int aa=-1;
  5. for( int a=0;a<5;a++){
  6. aa+=2;
  7. for(int b=1;b<=aa;b++){
  8. System.out.print( "#" );
  9. }
  10. System.out.println();}
  11. }
  12. }
  13. </strong>

 

13、验证“鬼谷猜想”:对任意自然数,若是奇数,就对它乘以 3 再加 1;若是

偶数,就对它除以 2,这样得到一个新数,再按上述计算规则进行计算,一直进

行下去,最终必然得到 1。

  1. <strong>package HomeWork13;
  2. import java.util.Random;;
  3. public class HomeWork13 {
  4. public static void main(String[] args) {
  5. /*
  6. * 验证“鬼谷猜想”:对任意自然数,若是奇数,
  7. * 就对它乘以3再加1;若是 偶数,就对它除以2,
  8. * 这样得到一个新数,
  9. * 再按上述计算规则进行计算,
  10. * 一直进 行下去,最终必然得到1。 */
  11. int num;
  12. Random rd=new Random();
  13. //Integer.MAX_VALUE为最大的整数
  14. num=1+rd.nextInt(Integer.MAX_VALUE);//产生数的范围-2[31]----2[31]-1
  15. //System.err.println(rd.nextInt(100));//产生数>=0且<100
  16. System.out.println("原本的数为"+num);
  17. while(num!=1){
  18. System.out.println("产生的新数是"+num);
  19. if(num%2==0){
  20. //偶数
  21. num=num/2;
  22. }
  23. else{
  24. num=num*3+1;
  25. }
  26. }
  27. System.out.println(num);
  28. }
  29. }
  30. </strong>

 

14、编程求 1~10000 之间的所有“完全数”,完全数是该数的所有因子之和等于该数的数。例如,6 的因子有 1、2、3,且 6=1+2+3,所以 6 是完全数。

  1. <strong>package HomeWork14;
  2. public class HomeWork14 {
  3. public static boolean isyinzi(int num ){
  4. int sum=0;
  5. //判断一个整数是不是一个完全数
  6. for(int d=num-1;d>=1;d--){
  7. if(num%d==0){
  8. sum+=d;
  9. }
  10. }
  11. return sum==num;
  12. }
  13. public static void main(String[] args) {
  14. // TODO Auto-generated method stub
  15. /*
  16. * 编程求1~10000之间的所有“完全数”,
  17. * 完全数是该数的所有因子之和等
  18. * 于该数的数。例如,6的因子有1、2、3,
  19. * 且6=1+2+3,所以6是完全数*/
  20. for(int a=1;a<=1000;a++){
  21. int num=a;
  22. if(isyinzi(num)){
  23. System.out.println(num);
  24. }
  25. }
  26. }
  27. }
  28. </strong>

 

 

15、一个整数的各位数字之和能被 9 整除,则该数也能被 9 整除。编程验证给

定的整数能否被 9 整除。

  1. <strong>package HomeWork15;
  2. import java.util.Random;
  3. public class HomeWork15 {
  4. public static void panduan(int num){
  5. int b=num/100; //百位数
  6. int s=num%100/10; //十位数
  7. int g=num%10; //个位数
  8. if(num%9==0){
  9. System.out.println(num+"能被9整除");
  10. if((b+s+g)%9==0){
  11. System.out.println("同时"+num+"的各个位数之和也能被9整除");
  12. }
  13. else{
  14. System.out.println("但是"+num+"的各个位数之和不能被9整除");
  15. }
  16. }
  17. else
  18. System.out.println("next test!");
  19. }
  20. public static void main(String[] args) {
  21. Random rd=new Random();
  22. int shu=10+rd.nextInt(90);
  23. shu =shu *9;
  24. panduan(shu);
  25. }
  26. }
  27. </strong>

 

16、猴子吃桃问题。猴子第一天摘下若干个桃子,当时就吃了一半,还不过瘾,

就又吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃

前一天剩下的一半零一个。到第 10 天在想吃的时候就剩一个桃子了,求第一天共

摘下来多少个桃子?

  1. <strong>package HomeWork16;
  2. public class HomeWork16 {
  3. public static void main(String[] args) {
  4. int total=1;
  5. int day=10;
  6. for (int i = 10; i >0; i--) {
  7. System.out.println("第"+day+"天,有桃子"+total+"颗");
  8. total=(total+1)*2;
  9. day--;
  10. }
  11. }
  12. }
  13. </strong>

 

17、水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等

于它本身。(例如:1^3 + 5^3 + 3^3 = 153)。编程求出所有三位的水仙花数。

  1. <strong>package HomeWork17;
  2. public class HomeWork17 {
  3. public static void main(String[] args) {
  4. for(int num=100;num<1000;num++){
  5. if(isshuixian(num)){
  6. System.out.println(num);
  7. }
  8. }
  9. }
  10. //判断一个数是不是水仙花数
  11. public static boolean isshuixian(int num){
  12. int b=num/100;
  13. int s=num%100/10;
  14. int g=num%10;
  15. return Math.pow(b, 3)
  16. +Math.pow(s, 3)
  17. +Math.pow(g, 3)==num?true:false;
  18. }
  19. }
  20. </strong>

 

18、已知 XYZ+YZZ=532,其中,X、Y、Z 为数字,编程求出 X、Y 和 Z 的值。

19、古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔

子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数

为多少?

  1. <strong>package HomeWork19;
  2. import java.util.Scanner;
  3. public class HomeWork19 {
  4. /*
  5. * 古典问题:有一对兔子,
  6. * 从出生后第3 个月起每个月都生一对兔子,
  7. * 小兔 子长到第三个月后每个月又生一对兔子,
  8. * 假如兔子都不死,
  9. * 问每个月的兔子总数 为多少? */
  10. public int rubbit(int mon){
  11. if(mon<=2){
  12. return 1;
  13. }
  14. else{
  15. return rubbit(mon-1)+rubbit(mon-2);
  16. }
  17. }
  18. public static void main(String[] args) {
  19. int r=1;
  20. int rr=1;
  21. int rrr=1;
  22. System.out.println("方法一:");
  23. for(int a=1;a<=12;a++){
  24. //12个月
  25. if(a<=2){
  26. r=1;
  27. }
  28. else{
  29. //当前月等于前两个月之和
  30. r=rr+rrr;
  31. rrr=rr;
  32. rr=r;
  33. }
  34. System.out.println(r*2);
  35. }
  36. System.out.println("方法二,求指定月份的兔子数量:");
  37. HomeWork19 jisuan=new HomeWork19();
  38. System.out.println("请输入月份:");
  39. Scanner sc=new Scanner(System.in);
  40. int yue=sc.nextInt();
  41. System.out.println(yue+"月份的兔子数量是"+(jisuan.rubbit(yue))*2);
  42. }
  43. }
  44. </strong>

 

20、将一个正整数分解质因数。例如:输入 90,打印出 90=2*3*3*5。

  1. <strong>package HomeWork20;
  2. import java.util.Scanner;
  3. public class HomeWork20 {
  4. public static void main(String[] args) {
  5. System.out.println("请输入一个整数:");
  6. Scanner sc=new Scanner(System.in);
  7. int num=sc.nextInt();
  8. System.out.println(num+"的质因数有:");
  9. for(int i=2;i<num;i++){
  10. while(num%i==0){
  11. num/=i;
  12. System.out.print(i+" ");
  13. }
  14. }
  15. System.out.print(" "+num);
  16. }
  17. }</strong>

 

01.类的成员变量 猜数字游戏一个类A有一个成员变量v有一个初值100。定义一个类对A类的成员变量v进行猜。如果大了则提示大了小了则提示小了。等于则提示猜测成功。

  1. import java.util.*;
  2. public class lianxi
  3. {
  4. public static void main(String[] dsa)
  5. {
  6. A a=new A();
  7. Scanner input=new Scanner(System.in);
  8. while (1==1)
  9. {
  10. System.out.println("请猜测数字");
  11. int i=input.nextInt();
  12. if (i<a.v)
  13. {
  14. System.out.println("小了");
  15. continue;
  16. }
  17. else if (i>a.v)
  18. {
  19. System.out.println("大了");
  20. continue;
  21. }
  22. else
  23. {
  24. System.out.println("恭喜你猜对了!");
  25. break;
  26. }
  27. }
  28. }
  29. }
  30. class A
  31. {
  32. public int v=100;
  33. }

02.类的成员变量 请定义一个交通工具(Vehicle)的类其中有: 属性速度(speed)体积(size)等等 方法移动(move())设置速度(setSpeed(int speed))加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象并通过方法给它初始化speed,size的值并且通过打印出来。另外调用加速减速的方法对速度进行改变。

  1. public class Vehicle
  2. {
  3. private int speed;
  4. private String size;
  5. public void move()
  6. {
  7. System.out.println("i'm moving");
  8. }
  9. public void setSpeed(int speed)
  10. {
  11. System.out.println("now i'm running with"+speed+"per hour");
  12. }
  13. public void speedUp()
  14. {
  15. Vehicle v=new Vehicle();
  16. v.setSpeed(1000);
  17. }
  18. public void speedDown()
  19. {
  20. Vehicle v=new Vehicle();
  21. v.setSpeed(20);
  22. }
  23. public static void main(String[] dsa)
  24. {
  25. Vehicle v=new Vehicle();
  26. v.speed=100;
  27. v.size="50/m^3";
  28. System.out.println("the initial speed is"+v.speed+"and my size is "+v.size);
  29. v.speedUp();
  30. v.speedDown();
  31. }
  32. }

03.类的成员变量与方法、构造方法 在程序中经常要对时间进行操作但是并没有时间类型的数据。那么我们可以自己实现一个时间类来满足程序中的需要。 定义名为MyTime的类其中应有三个整型成员时hour分minute秒second为了保证数据的安全性这三个成员变量应声明为私有。 为MyTime类定义构造方法以方便创建对象时初始化成员变量。 再定义diaplay方法用于将时间信息打印出来。 为MyTime类添加以下方法 addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。

  1. public class MyTime
  2. {
  3. private int hour;
  4. private int minute;
  5. private int second;
  6. public MyTime(int x,int y,int z)
  7. {
  8. this.hour=x;
  9. this.minute=y;
  10. this.second=z;
  11. }
  12. public void display()
  13. {
  14. System.out.println("the time is "+this.hour+":"+this.minute+":"+this.second);
  15. }
  16. public void addHour(int hou)
  17. {
  18. this.hour=this.hour+hou;
  19. }
  20. public void addSecond(int sec)
  21. {
  22. this.second=this.second+sec;
  23. }
  24. public void addMinute(int min)
  25. {
  26. this.minute=this.minute+min;
  27. }
  28. public void subHour(int hou)
  29. {
  30. this.hour=this.hour-hou;
  31. }
  32. public void subMinute(int min)
  33. {
  34. this.minute=this.minute-min;
  35. }
  36. public void subSecond(int sec)
  37. {
  38. this.second=this.second-sec;
  39. }
  40. }

【练习题】04.构造方法 编写Java程序模拟简单的计算器。 定义名为Number的类其中有两个整型数据成员n1和n2应声明为私有。编写构造方法赋予n1和n2初始值再为该类定义加addition、减subtration、乘multiplication、除division等公有成员方法分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象调用各个方法并显示计算结果。

  1. public class Number
  2. {
  3. private int x;
  4. private int y;
  5. public Number(int x,int y)
  6. {
  7. this.x=x;
  8. this.y=y;
  9. }
  10. public void plus()
  11. {
  12. System.out.println("the result is:"+(this.x+this.y));
  13. }
  14. public void except()
  15. {
  16. System.out.println("the result is :"+(this.x-this.y));
  17. }
  18. public void multiplication()
  19. {
  20. System.out.println("the result is :"+(this.x*this.y));
  21. }
  22. public void division()
  23. {
  24. System.out.println("the result is :"+(this.x/this.y));
  25. }
  26. public static void main(String[] dsa)
  27. {
  28. Number lian=new Number(4,4);
  29. lian.plus();
  30. lian.except();
  31. lian.multiplication();
  32. lian.division();
  33. }
  34. }

【练习题】05.构造方法 编写Java程序用于显示人的姓名和年龄。 定义一个人类Person该类中应该有两个私有属性姓名name和年龄age。定义构造方法用来初始化数据成员。再定义显示display方法将姓名和年龄打印出来。 在main方法中创建人类的实例然后将信息显示。

  1. public class lianxi
  2. {
  3. private String name;
  4. private int age;
  5. public lianxi(String name,int age)
  6. {
  7. this.name=name;
  8. this.age=age;
  9. }
  10. public void display()
  11. {
  12. System.out.println("name:"+name+"\tage:"+age);
  13. }
  14. public static void main(String[] dsa)
  15. {
  16. lianxi lian=new lianxi("wing",29);
  17. lian.display();
  18. }
  19. }

【练习题】06.get方法和set方法 定义一个类该类有一个私有成员变量通过构造方法将其进行赋初值并提供该成员的getXXX()和setXXX()方法 提示假设有private String name;则有

  1. public void setName(String name){ this.name = name; } public String getName(){ return this.name; }
  2. public class lianxi
  3. {
  4. private int i;
  5. public lianxi(int i)
  6. {
  7. lianxi lian=new lianxi();
  8. lian.seti(i);
  9. lian.geti();
  10. System.out.println("i="+i);
  11. }
  12. public lianxi()
  13. {}
  14. public int geti()
  15. {
  16. return i;
  17. }
  18. public void seti(int i)
  19. {
  20. this.i=i;
  21. }
  22. public static void main(String[] dsa)
  23. {
  24. lianxi lian=new lianxi(3);
  25. }
  26. }

【练习题】07.构造方法与重载 为“无名的粉”写一个类class WuMingFen 要求: 1.有三个属性 面码:String theMa 粉的分量(两) int quantity 是否带汤 boolean likeSoup 2.写一个构造方法 以便于简化初始化过程 如 WuMingFen f1 = new WuMingFen("牛肉",3,true); 3.重载构造方法 使得初始化过程可以多样化 WuMingFen f2 = new WuMingFen("牛肉",2); 4.如何使得下列语句构造出来的粉对象是酸辣面码、2两、带汤的 WuMingFen f3 = new WuMingFen(); 5.写一个普通方法 check() 用于查看粉是否符合要求。即 将对象的三个属性打印在控制台上。

  1. public class WuMingFen
  2. {
  3. private String theMa;
  4. private int quantity;
  5. private boolean likeSoup;
  6. public WuMingFen (String s,int i,boolean b)
  7. {
  8. this.theMa=s;
  9. this.quantity=i;
  10. this.likeSoup=b;
  11. }
  12. public WuMingFen (String s,int i)
  13. {
  14. this.theMa=s;
  15. this.quantity=i;
  16. }
  17. public WuMingFen (String s,boolean b,int i)
  18. {
  19. this.theMa=s;
  20. this.quantity=i;
  21. this.likeSoup=b;
  22. if (b==true)
  23. {
  24. String b1="带汤的";
  25. System.out.println(theMa+quantity+"两"+b1);
  26. }
  27. }
  28. public void check()
  29. {
  30. if (likeSoup==true)
  31. {
  32. String b1="带汤的";
  33. System.out.println("面码:"+theMa+"\n分量"+quantity+"\n"+b1);
  34. }
  35. else
  36. {
  37. String b1="不带汤的";
  38. System.out.println("面码:"+theMa+"\n分量"+quantity+"\n"+b1);
  39. }
  40. }
  41. public static void main(String[] args)
  42. {
  43. WuMingFen lian=new WuMingFen ("沙茶面",2,true);
  44. lian.check();
  45. }
  46. }

【练习题】08.构造方法的重载 定义一个名为Vehicles 交通工具 的基类 该类中应包含String类型的成员属性brand 商标 和color 颜色 还应包含成员方法run 行驶 在控制台显示“我已经开动了” 和showInfo 显示信息 在控制台显示商标和颜色 并编写构造方法初始化其成员属性。 编写Car 小汽车 类继承于Vehicles类 增加int型成员属性seats 座位 还应增加成员方法showCar 在控制台显示小汽车的信息 并编写构造方法。 编写Truck 卡车 类继承于Vehicles类 增加float型成员属性load 载重 还应增加成员方法showTruck 在控制台显示卡车的信息 并编写构造方法。 在main方法中测试以上各类。

  1. public class Vehicles
  2. {
  3. public String brand;
  4. public String color;
  5. public void run()
  6. {
  7. System.out.println("i am running");
  8. }
  9. public Vehicles(String b, String b1)
  10. {
  11. this.brand=b;
  12. this.color=b1;
  13. }
  14. public void showInfo()
  15. {
  16. System.out.println("brand:"+this.brand+"\tcolor:"+this.color);
  17. }
  18. public static void main(String[] dad)
  19. {
  20. Vehicles lian=new Vehicles ("Lamborgihini","yellow");
  21. lian.showInfo();
  22. car c=new car("Aventador","green",6);
  23. c.showCar();
  24. Truck t=new Truck("Dongfangxuetielong","Bule",12);
  25. t.showTruck();
  26. }
  27. }
  28. class car extends Vehicles
  29. {
  30. public int seat;
  31. public void showCar()
  32. {
  33. System.out.println("i am a "+this.brand+"my color is "+this.color+"i have "+this.seat+"seats~");
  34. }
  35. public car(String b, String b1,int s)
  36. {
  37. super(b,b1);
  38. this.seat=s;
  39. }
  40. }
  41. class Truck extends Vehicles
  42. {
  43. public float load;
  44. public void showTruck()
  45. {
  46. System.out.println("i am a "+this.brand+"my color is "+this.color+"i can stand "
  47. +this.load+"tons of materials");
  48. }
  49. public Truck(String b, String b1,float f)
  50. {
  51. super(b,b1);
  52. this.load=f;
  53. }
  54. }

【练习题】09.构造方法与重载 定义一个网络用户类 要处理的信息有用户ID、用户密码、email地址。在建立类的实例时 把以上三个信息都作为构造函数的参数输入 其中用户ID和用户密码时必须的 缺省的email地址是用户ID加上字符串"@gameschool.com"

  1. public class UerInfo
  2. {
  3. private int id;
  4. private String pwd;
  5. private String e_add;
  6. public UerInfo(int i,String s,String s1)
  7. {
  8. this.id=i;
  9. this.pwd=s;
  10. this.e_add=s1;
  11. System.out.println(id+"\n"+pwd+"\n"+e_add);
  12. }
  13. public UerInfo(int i,String s)
  14. {
  15. this.id=i;
  16. this.pwd=s;
  17. this.e_add=id+"@gameschool.com";
  18. System.out.println(id+"\n"+pwd+"\n"+e_add);
  19. }
  20. public static void main(String[] dsa)
  21. {
  22. UerInfo uer=new UerInfo(1201012204,"dwajldwajlj","1111111111@gameschool.com");
  23. UerInfo u=new UerInfo(1201012204,"dwijadiwjal");
  24. }
  25. }

【练习题】10.构造方法与重载、包 编写Addition类 该类中应包含一组实现两数相加运算的重载方法。 实现加法运算的方法 应接受两个参数 即加数和被加数 方法将两个参数进行加法运算后 返回相加结果。考虑可能针对不同的数据类型进行计算 重载一组方法 包括整型、长整型、浮点型、双精度浮点型、还有字符串。 在main方法中创建Addition类的实例 分别调用重载方法测试其效果。 应将Addition类打入到包中 以自己名字的拼音为包命名。

  1. package cj.lian;
  2. public class lianxi
  3. {
  4. public void additionInt(int x,int y)
  5. {
  6. int sum=x+y;
  7. System.out.println("sum="+sum);
  8. }
  9. public void additionLong(long x,long y)
  10. {
  11. long sum=x+y;
  12. System.out.println("sum="+sum);
  13. }
  14. public void additionFloat(float x,float y)
  15. {
  16. float sum=x+y;
  17. System.out.println("sum="+sum);
  18. }
  19. public void additionDouble(double x,double y)
  20. {
  21. double sum=x+y;
  22. System.out.println("sum="+sum);
  23. }
  24. public void additionString(String x,String y)
  25. {
  26. String sum=x+y;
  27. System.out.println("sum="+sum);
  28. }
  29. public static void main(String[] dsa)
  30. {
  31. lianxi lian=new lianxi();
  32. lian.additionInt(1,2);
  33. lian.additionString("1","2");
  34. }
  35. }

【练习题】11.构造方法与重载 将上次练习题三中编写的MyTime类打到以自己名字的拼音命名的包中 并为该类重载一组构造方法 以方便使用者能够以多种形式初始化该类的实例。

  1. package java.time;
  2. public class MyTime
  3. {
  4. private int hour;
  5. private int minute;
  6. private int second;
  7. public MyTime(int x,int y,int z)
  8. {
  9. this.hour=x;
  10. this.minute=y;
  11. this.second=z;
  12. }
  13. public MyTime()
  14. {}
  15. public void display()
  16. {
  17. System.out.println("the time is "+this.hour+":"+this.minute+":"+this.second);
  18. }
  19. public void addHour(int hou)
  20. {
  21. this.hour=this.hour+hou;
  22. }
  23. public void addSecond(int sec)
  24. {
  25. this.second=this.second+sec;
  26. }
  27. public void addMinute(int min)
  28. {
  29. this.minute=this.minute+min;
  30. }
  31. public void subHour(int hou)
  32. {
  33. this.hour=this.hour-hou;
  34. }
  35. public void subMinute(int min)
  36. {
  37. this.minute=this.minute-min;
  38. }
  39. public void subSecond(int sec)
  40. {
  41. this.second=this.second-sec;
  42. }
  43. public static void main(String[] das)
  44. {
  45. MyTime t=new MyTime();
  46. t.display();
  47. }
  48. }

编译包: javac -d . MyTime.java

【练习题】12.构造方法与重载 建立一个汽车类 包括轮胎个数 汽车颜色 车身重量等属性。并通过不同的构造方法创建事例。 至少要求 汽车能够加速 减速 停车。 要求 命名规范 代码体现层次 有友好的操作提示。

  1. public class car
  2. {
  3. private int lunzi;
  4. private String color;
  5. private double weight;
  6. public car(){}
  7. public car(int i,String s,double d)
  8. {
  9. this.lunzi=i;
  10. this.color=s;
  11. this.weight=d;
  12. }
  13. public void SpeedUp()
  14. {
  15. System.out.println("i am speeding up~");
  16. }
  17. public void SpeedDown()
  18. {
  19. System.out.println("i am speeding down~");
  20. }
  21. public void Stop()
  22. {
  23. System.out.println("i have stopped");
  24. }
  25. public static void main(String[] das)
  26. {
  27. car c=new car();
  28. car c1=new car(4,"yellow",1.45);
  29. c.SpeedUp();
  30. c.SpeedDown();
  31. c.Stop();
  32. }
  33. }

【练习题】13.构造方法与重载 创建一个类 为该类定义三个构造函数 分别执行下列操作 1、传递两个整数值并找出其中较大的一个值 2、传递三个double值并求出其乘积 3、传递两个字符串值并检查其是否相同 4、在main方法中测试构造函数的调用

  1. public class lianxi
  2. {
  3. public lianxi(int x,int y)
  4. {
  5. if (x>y)
  6. {
  7. System.out.println("The max is "+x);
  8. }
  9. else
  10. System.out.println("The max is "+y);
  11. }
  12. public lianxi(double d1,double d2,double d3)
  13. {
  14. double ji=d1*d2*d3;
  15. System.out.println("The multiply result is "+ji);
  16. }
  17. public lianxi(String s1,String s2)
  18. {
  19. boolean b;
  20. if (s1.equals(s2))
  21. {
  22. b=true;
  23. System.out.println(b);
  24. }
  25. else
  26. {
  27. b=false;
  28. System.out.println(b);
  29. }
  30. }
  31. public static void main(String[] dasd)
  32. {
  33. lianxi c=new lianxi(1,2);
  34. lianxi c1=new lianxi(1,2,3);
  35. lianxi c2=new lianxi("nihao","nihao");
  36. }
  37. }

【练习题】14.Static关键字与普通变量的区别 创建一个名称为StaticDemo的类 并声明一个静态变量和一个普通变量。对变量分别赋予10和5的初始值。在main()方法中输出变量值。

  1. public class StaticDemo
  2. {
  3. private static int i=10;
  4. private int y=5;
  5. public static void main(String[] das)
  6. {
  7. StaticDemo s=new StaticDemo();
  8. System.out.println("The static digit is "+car.i+"\n and the normal digit is "+s.y);
  9. }
  10. }

【练习题】15.继承 创建一个名称为MainPackage的包 使它包含MainClass和MainSubClass类。MainClass类应当包含变量声明 其值从构造函数中输出。MainSubClass类从MainClass派生而来。试执行下列操作 创建一个名称为SamePackage的类 使它导入上述包 并创建一个MainSubClass类的对象。

创建MainClass包--

  1. package MainPackage.Main;
  2. public class MainClass
  3. {
  4. public int i=10;
  5. public MainClass()
  6. {
  7. System.out.println(i);
  8. }
  9. }

创建MainSubClass包--

  1. package MainPackage.Main;
  2. public class MainSubClass extends MainClass
  3. {
  4. public MainSubClass (){}
  5. }

创建SamePackage类---

  1. import MainPackage.Main.MainSubClass;
  2. public class SamePackage
  3. {
  4. public static void main(String[] da)
  5. {
  6. MainSubClass m=new MainSubClass();
  7. }
  8. }

【练习题】16.包、继承、构造函数 创建一个名称为MainPackage的包 使它包含MainClass和MainSubClass类。MainClass类应当包含变量声明 其值从构造方法中输出。MainSubClass类从MainClass派生而来。试执行下列操作 创建一个名称为SamePackage的类 使它导入上述包 并创建一个MainSubClass类的对象。

创建MainClass包--

  1. package MainPackage.Main;
  2. public class MainClass
  3. {
  4. public int i=10;
  5. public MainClass()
  6. {
  7. System.out.println(i);
  8. }
  9. }

创建MainSubClass包--

  1. package MainPackage.Main;
  2. public class MainSubClass extends MainClass
  3. {
  4. public MainSubClass (){}
  5. }

创建SamePackage类---

  1. import MainPackage.Main.MainSubClass;
  2. public class SamePackage
  3. {
  4. public static void main(String[] da)
  5. {
  6. MainSubClass m=new MainSubClass();
  7. }
  8. }

【练习题】17.继承 创建一个父类和子类 父类有一个数据成员 子类继承父类的该数据成员 通过构造函数初始化并显示该数据成员的值。

  1. class Father
  2. {
  3. public int i=10;
  4. }
  5. class Son extends Father
  6. {
  7. public lianxi()
  8. {
  9. System.out.println(i);
  10. }
  11. public static void main(String[] dsa)
  12. {
  13. Son s=new Son ();
  14. }
  15. }

【练习题】18.覆盖、继承 建立一个汽车Auto类 包括轮胎个数 汽车颜色 车身重量、速度等成员变量。并通过不同的构造方法创建实例。至少要求 汽车能够加速 减速 停车。 再定义一个小汽车类Car 继承Auto 并添加空调、CD等成员变量 覆盖加速 减速的方法

  1. public class Auto
  2. {
  3. public int luntai;
  4. public String color;
  5. public double weight;
  6. public int speed;
  7. public Auto(){}
  8. public void jiasu()
  9. {
  10. System.out.println("wo zai jiasu");
  11. }
  12. public void jiansu()
  13. {
  14. System.out.println("wo zai jiansu");
  15. }
  16. public void tingzhi()
  17. {
  18. System.out.println("wo bu kai le ");
  19. }
  20. public static void main(String[] dsa)
  21. {
  22. car c=new car();
  23. c.jiasu();
  24. c.jiansu();
  25. }
  26. }
  27. class car extends Auto
  28. {
  29. public String air_condition;
  30. public String cd;
  31. public void jiasu()
  32. {
  33. System.out.println("wo shi jiaoche, wo zai jiasu");
  34. }
  35. public void jiansu()
  36. {
  37. System.out.println("wo shi jianche,wo zai jiansu");
  38. }
  39. }
  40. ```java
  41. 【练习题】19.抽象类与继承 设计一个能细分为矩形、三角形、圆形和椭圆形的“图形”类。
  42. 使用继承将这些图形分类 找出能作为基类部分的共同特征(如校准点)和方法(如画法、初始化)
  43. 并看看这些图形是否能进一步划分为子类。 本题只考虑实现思想 不考虑具体实现的细节 实现方式可自由发挥。
  44. ```java
  45. abstract class tuxing
  46. {
  47. public tuxing()
  48. {
  49. System.out.println("i am tuxing");
  50. }
  51. public static void main(String[] dsa)
  52. {
  53. juxing j=new juxing();
  54. circle c=new circle();
  55. tuoyuan t=new tuoyuan();
  56. }
  57. }
  58. class juxing extends tuxing
  59. {
  60. public juxing()
  61. {
  62. System.out.println(" i am juxing");
  63. }
  64. }
  65. class circle extends tuxing
  66. {
  67. public circle()
  68. {
  69. System.out.println("i am circle");
  70. }
  71. }
  72. class tuoyuan extends circle
  73. {
  74. public tuoyuan()
  75. {
  76. System.out.println("i am tuoyuan");
  77. }
  78. }

【练习题】20.抽象类 创建一个Vehicle类并将它声明为抽象类。在Vehicle类中声明一个NoOfWheels方法 使它返回一个字符串值。创建两个类Car和Motorbike从Vehicle类继承 并在这两个类中实现NoOfWheels方法。在Car类中 应当显示“四轮车”信息 而在Motorbike类中 应当显示“双轮车”信息。创建另一个带main方法的类 在该类中创建Car和Motorbike的实例 并在控制台中显示消息。

  1. public class lianxi
  2. {
  3. public static void main(String[] dsa)
  4. {
  5. Car c=new Car();
  6. c.NoOfWheels();
  7. Motorbike m=new Motorbike();
  8. m.NoOfWheels();
  9. }
  10. }
  11. abstract class Vehicle
  12. {
  13. public void NoOfWheels(){}
  14. }
  15. class Car extends Vehicle
  16. {
  17. public void NoOfWheels()
  18. {
  19. System.out.println("四轮车");
  20. }
  21. }
  22. class Motorbike extends Vehicle
  23. {
  24. public void NoOfWheels()
  25. {
  26. System.out.println("双轮车");
  27. }
  28. }

【练习题】21.抽象类 创建一个Vehicle类并将它声明为抽象类。在Vehicle类中声明一个NoOfWheels方法 使它返回一个字符串值。创建两个类Car和Motorbike从Vehicle类继承 并在这两个类中实现NoOfWheels方法。在Car类中 应当显示“四轮车”信息 而在Motorbike类中 应当显示“双轮车”信息。创建另一个带main方法的类 在该类中创建Car和Motorbike的实例 并在控制台中显示消息。

  1. public class lianxi
  2. {
  3. public static void main(String[] dsa)
  4. {
  5. Car c=new Car();
  6. c.NoOfWheels();
  7. Motorbike m=new Motorbike();
  8. m.NoOfWheels();
  9. }
  10. }
  11. abstract class Vehicle
  12. {
  13. public void NoOfWheels(){}
  14. }
  15. class Car extends Vehicle
  16. {
  17. public void NoOfWheels()
  18. {
  19. System.out.println("四轮车");
  20. }
  21. }
  22. class Motorbike extends Vehicle
  23. {
  24. public void NoOfWheels()
  25. {
  26. System.out.println("双轮车");
  27. }
  28. }

【练习题】22.接口 创建一个名称为Vehicle的接口 在接口中添加两个带有一个参数的方法start()和stop()。在两个名称分别为Bike和Bus的类中实现Vehicle接口。创建一个名称为interfaceDemo的类 在interfaceDemo的main()方法中创建Bike和Bus对象 并访问start()和stop()方法。

  1. public interface Vehicle
  2. {
  3. public void start();
  4. public void stop();
  5. }//借口类
  6. public class interfaceDemo
  7. {
  8. public static void main(String[] dsa)
  9. {
  10. Bike bike=new Bike();
  11. bike.start();
  12. bike.stop();
  13. Bus bus=new Bus();
  14. bus.start();
  15. bus.stop();
  16. }
  17. }
  18. class Bike implements Vehicle
  19. {
  20. public void start()
  21. {
  22. System.out.println("i am bike, i am running");
  23. }
  24. public void stop()
  25. {
  26. System.out.println("i am bke,i am stop");
  27. }
  28. }
  29. class Bus implements Vehicle
  30. {
  31. public void start()
  32. {
  33. System.out.println("i am bus, i am running");
  34. }
  35. public void stop()
  36. {
  37. System.out.println("i am bke,i am stop");
  38. }
  39. }

【练习题】23.接口 创建一个名称为Vehicle的接口 在接口中添加两个带有一个参数的方法start()和stop()。在两个名称分别为Bike和Bus的类中实现Vehicle接口。创建一个名称为interfaceDemo的类 在interfaceDemo的main()方法中创建Bike和Bus对象 并访问start()和stop()方法。

  1. public interface Vehicle
  2. {
  3. public void start();
  4. public void stop();
  5. }//借口类
  6. public class interfaceDemo
  7. {
  8. public static void main(String[] dsa)
  9. {
  10. Bike bike=new Bike();
  11. bike.start();
  12. bike.stop();
  13. Bus bus=new Bus();
  14. bus.start();
  15. bus.stop();
  16. }
  17. }
  18. class Bike implements Vehicle
  19. {
  20. public void start()
  21. {
  22. System.out.println("i am bike, i am running");
  23. }
  24. public void stop()
  25. {
  26. System.out.println("i am bke,i am stop");
  27. }
  28. }
  29. class Bus implements Vehicle
  30. {
  31. public void start()
  32. {
  33. System.out.println("i am bus, i am running");
  34. }
  35. public void stop()
  36. {
  37. System.out.println("i am bke,i am stop");
  38. }
  39. }

【练习题】24.抽象类、继承、接口综合 设计一个系统 XXX门的实现过程 流程 设计一张抽象的门Door 那么对于这张门来说 就应该拥有所有门的共性 开门openDoor()和关门closeDoor() 然后对门进行另外的功能设计,防盗--theftproof()、防水--waterproof()、防弹--bulletproof()、防火、防锈…… 要求 利用继承、抽象类、接口的知识设计该门
接口 Imen

  1. public interface Imen
  2. {
  3. public void threfproof();
  4. public void waterproof();
  5. public void fireproof();
  6. public void bulletproof();
  7. public void rustproof();
  8. }
  9. public class lianxi
  10. {
  11. public static void main(String[] args)
  12. {
  13. men m=new men();
  14. m.opendoor();
  15. m.closedoor();
  16. }
  17. }
  18. abstract class Door
  19. {
  20. public void opendoor(){};
  21. public void closedoor(){};
  22. }
  23. class men extends Door implements Imen
  24. {
  25. public void opendoor()
  26. {
  27. System.out.println("i can open the door");
  28. }
  29. public void closedoor()
  30. {
  31. System.out.println("i can close the door");
  32. }
  33. public void threfproof()
  34. {
  35. System.out.println("i can threfproof");
  36. }
  37. public void waterproof()
  38. {
  39. System.out.println("i can waterproof");
  40. }
  41. public void fireproof()
  42. {
  43. System.out.println("i can fireproof");
  44. }
  45. public void bulletproof()
  46. {
  47. System.out.println("i can bulletproof");
  48. }
  49. public void rustproof()
  50. {
  51. System.out.println("i can rustproof");
  52. }
  53. }

【练习题】25.抽象类、继承、接口综合 设计一个系统 xxx纯净水生产线 目前流程是 从某个地方把水取出来 然后经过缓冲 过滤 加热和放糖的步骤 abstract 水{ public void 水(); } interface 过滤{} interface 缓冲{} interface 加热{} interface 放糖{} class 纯净水1 extends 水 imps 过滤,缓冲{} class 纯净水2 extends 水 imps 缓冲{} class 纯净水2 extends 水 imps 过滤{} 。。。。

(重复上题的方法)

【练习题】26.综合题 定义一个抽象的"Role"类 有姓名 年龄 性别等成员变量 1. 要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有) 再通过GetXXX()和SetXXX()方法对各变量进行读写。具有一个抽象的play()方法 该方法不返回任何值 同时至少定义两个构造方法。Role类中要体现出this的几种用法。 2. 从Role类派生出一个"Employee"类 该类具有Role类的所有成员 构造方法除外 并扩展 salary成员变量 同时增加一个静态成员变量“职工编号 ID ”。同样要有至少两个构造方法 要体现出this和super的几种用法 还要求覆盖play()方法 并提供一个final sing()方法。 3. "Manager"类继承"Employee"类 有一个final成员变量"vehicle" 4. 在main()方法中制造Manager和Employee对象,并测试这些对象的方法

  1. abstract class Role1
  2. {
  3. protected String name;
  4. protected int age;
  5. protected String sex;
  6. public abstract void play();
  7. public Role1(){}
  8. public Role1(String s,int i,String s1)
  9. {
  10. this.name=s;
  11. this.age=i;
  12. this.sex=s1;
  13. }
  14. public static void main(String[] dsa)
  15. {
  16. Employee e=new Employee();
  17. e.id=1201012204;
  18. e.salary=15000;
  19. e.name="you xiao";
  20. e.age=20;
  21. e.sex="Man";
  22. e.play();
  23. e.sing();
  24. Manager m=new Manager();
  25. System.out.println(e.id);
  26. System.out.println(e.salary);
  27. System.out.println(e.name);
  28. System.out.println(e.age);
  29. System.out.println(e.sex);
  30. System.out.println(m.vehicle);
  31. }
  32. }
  33. class Employee extends Role1
  34. {
  35. protected int id;
  36. protected int salary;
  37. public Employee(){}
  38. public Employee(String s,int i,String s1,int id,int salary)
  39. {
  40. super(s,i,s1);
  41. this.id=id;
  42. this.salary=salary;
  43. }
  44. public void play()
  45. {
  46. System.out.println("i can paly");
  47. }
  48. public final void sing()
  49. {
  50. System.out.println("i can sing");
  51. }
  52. }
  53. class Manager extends Employee
  54. {
  55. protected final String vehicle="Lamborghini";
  56. }

【练习题】27.综合题 题目 品尝饮料 时间 2006-06-18 一、 语言和环境 1. 实现语言 Java

  1. 环境要求 JDK1.4或以上版本及其联机帮助文档
    二、 要求 1、使用命令行参数 饮料类型 输出该饮料类型的味道 如 当命令行参数为1时 结果见图1 2、如果没有该种饮料 结果见如图2
    三、 推荐实现步骤
    1、建立一个Java抽象类Drink 应当 a、声明一个抽象方法taste() 该方法负责输出饮料的味道 b、声明int型常量来代表不同的饮料类型 咖啡、啤酒、牛奶 如 c、声明静态工厂方法getDrink(int drinkType) 根据传入的参数创建不同的饮料对象 并返回该对象 建议使用switch语句。该方法要求声明DrinkNotFoundException 当没有相对应的饮料类型时 抛出该异常。
    2、建立Drink的具体子类 a、分别建立Drink的子类 Coffee 代表咖啡 Beer 代表啤酒 Milk 代表牛奶 ; b、实现taste()方法 要求在控制台打印各自的味道特征。
    3、建立异常类DrinkNotFoundException a、继承Exception b、在Drink的 方 法getDrink(int drinkType)中 声 明 引 发DrinkNotFoundException异常 当传入的参数没有相对应的饮料类型时 抛出异常。 c、在使用getDrink方法的类中捕捉该异常。
    4、建立Test测试类 测试以上内容的正确性 a、编写main方法 通过命令行传参的方式传入某种饮料的类型。 b、在main方法中 调用Drink类的getDrink方法 获得相应的饮料对象。注意捕获DrinkNotFoundException。 c、然后调用该饮料对象的taste()方法 输出该饮料的味道。
    5、编译程序 并运行。
    四、 注意事项 1、仔细审题 把题目要求理解准确 2、请注意多态性的运用 3、请注意代码的书写、命名符合规范 应有适当的注释。 图2
  1. import java.util.*;
  2. abstract class Drink
  3. {
  4. public abstract void taste();
  5. protected int i1;
  6. protected int i2;
  7. protected int i3;
  8. public static void getDrink(int drinkType) throws DrinkNotFoundException
  9. {
  10. if (drinkType<1||drinkType>3)
  11. {
  12. throw new DrinkNotFoundException();
  13. }
  14. switch (drinkType)
  15. {
  16. case 1:
  17. System.out.println("咖啡");
  18. break;
  19. case 2:
  20. System.out.println("啤酒");
  21. break;
  22. case 3:
  23. System.out.println("牛奶");
  24. break;
  25. }
  26. }
  27. }
  28. class Coffee extends Drink
  29. {
  30. public void taste()
  31. {
  32. System.out.println("我是咖啡,味道是苦的");
  33. }
  34. }
  35. class Beer extends Drink
  36. {
  37. public void taste()
  38. {
  39. System.out.println("我是啤酒,味道是涩的");
  40. }
  41. }
  42. class Milk extends Drink
  43. {
  44. public void taste()
  45. {
  46. System.out.println("我是牛奶,味道是甜的");
  47. }
  48. }
  49. public class Role1
  50. {
  51. public static void main(String[] dsa) throws DrinkNotFoundException
  52. {
  53. Coffee c=new Coffee();
  54. c.taste();
  55. Beer b=new Beer();
  56. c.taste();
  57. Milk m=new Milk();
  58. m.taste();
  59. Scanner input=new Scanner(System.in);
  60. System.out.println("请输入一个饮料编号:");
  61. try
  62. {
  63. int i=input.nextInt();
  64. m.getDrink(i);
  65. }
  66. catch (Exception e)
  67. {
  68. throw new DrinkNotFoundException("你输入的编号所对应的饮料不存在");
  69. }
  70. }
  71. }
  72. class DrinkNotFoundException extends Exception
  73. {
  74. public DrinkNotFoundException()
  75. {
  76. super();
  77. }
  78. public DrinkNotFoundException(String mrg)
  79. {
  80. super(mrg);
  81. }
  82. }



作者:innerClass
链接:https://www.jianshu.com/p/886252693889
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1、定义长方形类,含:

  属性:宽、高(整型);

  方法:求周长、面积;

  构造方法3个:(1)无参——宽、高默认值为1;(2)1个参数——宽、高均为参数值;(3)2个参数——宽、高各为参数值。

  要求:进行测试。

代码如下:

长方形的类:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

package Test1;

 

public class Rectangle {

    //定义长宽属性

    private int iWidth;

    private int iHeight;

    //构造器1

    public Rectangle(){

        this.iHeight = 1;

        this.iWidth = 1;

    }

    //构造器2

    public Rectangle(int iIndex){

        this.iWidth = iIndex;

        this.iHeight = iIndex;

    }

    //构造器3

    public Rectangle(int iWidth, int iHeight){

        this.iHeight = iHeight;

        this.iWidth = iWidth;

    }

    //求周长

    public int getLength(){

        return 2*(this.iHeight+this.iWidth);

    }

    //求面积

    public int getSquare(){

        return this.iHeight*this.iWidth;

    }

 

}

 

测试类:

package Test1;

 

public class Test {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        Rectangle oRec1 = new Rectangle();

        System.out.println("默认长方形的周长为:"+oRec1.getLength());

        System.out.println("默认长方形的面积为:"+oRec1.getSquare());

 

        Rectangle oRec2 = new Rectangle(2);

        System.out.println("一个参数长方形的周长为:"+oRec2.getLength());

        System.out.println("一个参数长方形的面积为:"+oRec2.getSquare());

 

        Rectangle oRec3 = new Rectangle(2,3);

        System.out.println("两个参数长方形的周长为:"+oRec3.getLength());

        System.out.println("两个参数长方形的面积为:"+oRec3.getSquare());

 

    }

 

}

运行结果:

 

默认长方形的周长为:4

默认长方形的面积为:1

一个参数长方形的周长为:8

一个参数长方形的面积为:4

两个参数长方形的周长为:10

两个参数长方形的面积为:6

 

2、定义圆类,它有一个变量radius(半径)。从键盘输入数据,通过构造方法传递给radius,编程计算并输出圆的周长和面积(确保输入的数据不为负数)。

  要求:进行测试。

代码如下:

圆的类:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

package Test2;

 

public class Circle {

    private double radius;

 

    public Circle(double dRadius){

        this.radius = dRadius;

    }

 

    public double getLength(){

        return 2*Math.PI*this.radius;

    }

 

    public double getArea()

    {

        return Math.PI*this.radius*this.radius;

    }

 

}

 

 

测试类:

package Test2;

import java.util.Scanner;

 

public class Test {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        double iRadius;

        Scanner sc = new Scanner(System.in);

        System.out.print("请输入圆的半径:");

        iRadius = sc.nextDouble();

        if(iRadius < 0){

            System.out.println("你输入的半径有误!");

        }

        else{

            Circle oCir = new Circle(iRadius);

            System.out.println("圆的周长为:"+oCir.getLength());

            System.out.println("圆的面积为:"+oCir.getArea());

        }

 

 

    }

 

}

运行结果:

正数时:

请输入圆的半径:1

圆的周长为:6.283185307179586

圆的面积为:3.141592653589793

负数时:

请输入圆的半径:-1

你输入的半径有误!

 

 

3、定义长方体类,定义求底面积、体积的方法。(可利用上述定义的长方形类)

  要求:进行测试。

 

代码如下:

长方体类:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

        package Test3;

 

import Test1.Rectangle;

 

public class RecV extends Rectangle{

    int iLong;

 

    public RecV(int iWidth, int iHeight, int iLong){

        super(iWidth,iHeight);

        this.iLong = iLong;

    }

 

    public int getBtmArea(){

        return this.getSquare();

    }

 

    public int getVolume(){

        return this.getSquare()*this.iLong;

    }

 

 

}

 

测试类:

package Test3;

 

public class Test {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

 

        RecV oRecV = new RecV(1,2,3);

        System.out.println("长方体的底面积为:"+oRecV.getBtmArea());

        System.out.println("长方体的体积为:"+oRecV.getVolume());

 

    }

 

}

运行结果:

长方体的底面积为:2

长方体的体积为:6

 

4、定义球类,定义求体积的方法。(可利用上述定义的圆类)

要求:进行测试。

 

 

代码如下:

球的类:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

package Test4;

import Test2.Circle;

public class Bool extends Circle{

    public Bool(double dRadius) {

        super(dRadius);

        // TODO Auto-generated constructor stub

    }

 

    public double getBoolVolume(){

        return (4/3)*Math.PI*Math.pow(this.radius, 3.0);

    }

}

 

测试类:

    package Test4;

 

public class Test {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

 

        Bool oBool = new Bool(1);

        System.out.println("球的体积为:"+oBool.getBoolVolume());

 

    }

 

}

运行结果:

球的体积为:3.141592653589793

 

 

5、定义一个计算器类,包括加、减、乘、除运算。

要求:进行测试。

 

代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

package Test5;

 

public class Calculator {

    private int iFirstNum;

    private int iSecondNum;

 

    public Calculator(int iFirst, int iSecond){

        this.iFirstNum = iFirst;

        this.iSecondNum = iSecond;

    }

 

    public int getAdd(){

        return this.iFirstNum + this.iSecondNum;

    }

 

    public int getSub(){

        return this.iFirstNum - this.iSecondNum;

    }

 

    public int getMul(){

        return this.iFirstNum * this.iSecondNum;

    }

 

    public void getDev(){

        if(this.iSecondNum ==0){

            System.out.print("分子不能为零!");

        }

        else

        {

            System.out.print(this.iFirstNum/this.iSecondNum);

        }

    }

 

}

 

测试类:

package Test5;

 

public class Test {

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        Calculator oCal = new Calculator(4,2);

        System.out.println("两数之和为 :"+oCal.getAdd());

        System.out.println("两数之差为:"+oCal.getSub());

        System.out.println("两数之积为:"+oCal.getMul());

        System.out.print("两数之商为:");

        oCal.getDev();

    }

 

}

运行结果:

两数之和为 :6

两数之差为:2

两数之积为:8

两数之商为:2

 

7、编写程序使用复数类Complex验证两个复数 2+2i 和3+3i 相加产生一个新的复数5+5i 。复数类Complex满足如下要求:

(1)属性:RealPart : int型,代表复数的实数部分;ImaginPart : int型,代表复数的虚数部分

(2)方法:

Complex( ) : 构造方法,将复数的实部和虚部都置0

Complex( int r , int i ) : 构造方法,形参 r 为实部的初值,i为虚部的初值。

Complex complexAdd(Complex a) : 将当前复数对象与形参复数对象相加,所得的结果仍是一个复数值,返回给此方法的调用者。

String toString( ) : 把当前复数对象的实部、虚部组合成 a+bi 的字符串形式,其中a 和 b分别为实部和虚部的数据。

(3)进行测试。

 

代码如下:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

package Test7;

 

public class Complex {

 

    private int iRealPart;

    private int iImaginPart;

 

    public Complex(){

        iRealPart = 0;

        iImaginPart = 0;

    }

 

    public Complex(int r, int i){

        iRealPart = r;

        iImaginPart = i;

    }

 

    public Complex complexAdd( Complex a ){

        this.iRealPart += a.iRealPart;

        this.iImaginPart += a.iImaginPart;

        return this;

    }

 

    public String toString(){

        return this.iRealPart+"+"+this.iImaginPart+"i";

    }

 

 

}

 

 

测试类:

package Test7;

 

public class Test {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        //复数实例化

        Complex oFirstNum = new Complex();

        Complex oFirstNum1 = new Complex(2,3);

        Complex oSecondNum = new Complex(3,4);

 

        oFirstNum.complexAdd(oSecondNum);

        System.out.println("1。复数之和为:"+oFirstNum.toString());

 

        oFirstNum1.complexAdd(oSecondNum);

        System.out.println("2.复数之和为:"+oFirstNum1.toString());

    }

 

}

运行结果:

1。复数之和为:3+4i

2.复数之和为:5+7i

 

 

8、试编写Java代码实现一个计数器类Computer其中包括:

域value :用来保存计数器的当前值;

方法increment(): 计数器加一;

方法decrement() :计数器减一;

方法reset():计数器清零。

请编写并调试程序。

 

代码如下:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

package Test8;

 

public class Computer {

    private int value;

 

    public Computer(){

        this.value = 0;

    }

 

    public void increment(){

        this.value++;

    }

 

    public void decrement(){

        this.value--;

    }

 

    public void reset(){

        this.value = 0;

    }

 

    public int getValue(){

        return this.value;

    }

 

}

 

测试类:

package Test8;

 

public class Test {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

 

        Computer oCount = new Computer();

 

        System.out.println("计数器的初始值为:" + oCount.getValue());

 

        oCount.increment();

        oCount.increment();

        oCount.increment();

        System.out.println("加三后的值为:" + oCount.getValue());

 

        oCount.decrement();

        System.out.println("减一后的值为:" + oCount.getValue());

 

        oCount.reset();

        System.out.println("初始化后的值为:" + oCount.getValue());

 

    }

 

}

运行结果:

计数器的初始值为:0

加三后的值为:3

减一后的值为:2

初始化后的值为:0


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/182395?site
推荐阅读
相关标签
  

闽ICP备14008679号