鱼C论坛

 找回密码
 立即注册
查看: 3827|回复: 24

[技术交流] #鱼C五周年嘉年华# 《JAVA程序设计&改错》# 第三章

[复制链接]
发表于 2015-2-9 20:31:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 百日维新 于 2015-2-25 02:21 编辑

java.jpg





no21 String str = "a"+"b"+"c";总共创建了几个字符串?说明理由。(15分)

no22 计算字符串中子串出现的次数 (15分)

no23 求一个偶数(大于6)表示为两个素数之和。(15分)

no24 求一元二次方程的解(aX2 + bX + C = 0)(15分)

no25 打印出杨辉三角形(15分)

no26 请输入星期几的第一个字母来判断一下是星期几, 如果第一个字母一样, 则继续判断第二个字母。(15分)

no27 打印出如下图案(菱形)(15分)

   *
  ***
*****
*******
*****
  ***
   *

no28 编程求10000以内的完数。一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如 6=1+2+3.编程找出 1000 以内的所有完数。(15分)

no29 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。(15分)

no30 用程序说明Java 的==与 equals 的区别(20分)




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-10 10:22:36 | 显示全部楼层
抢沙发啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-10 10:54:27 | 显示全部楼层
String str = "a"+"b"+"c";总共创建了几个字符串?说明理由。
共5个
“a”,"b","c","ab","abc"

点评

不对!在考虑考虑  发表于 2015-2-10 12:54
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-10 22:21:53 | 显示全部楼层
No30 用程序说明Java 的==与 equals 的区别

对于基本数据类型boolean,byte,short,char,int,long,float,double, 他们之间的比较,==比较的是他们的值。
对于对象==是比较的对象的引用是否相同,即是否指向相同的地址。对于业务逻辑来讲两个对象是否相同,也许并不是看指向地址是否相同。而是由自身的逻辑决定,此时我们通过重写equals方法,来实现自己的判断对象是否相同的逻辑。例如String的equals,就是看String的内容是否相同,而不是看指向地址是否相同。

点评

+20 分  发表于 2015-2-10 22:23
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-10 22:23:51 | 显示全部楼层
no29 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
package 小甲鱼活动;

import java.util.Scanner;

public class _3_29
{

        public static void main(String[] args)
        {
                System.out.println("输入a和个数:");
                Scanner scanner = new Scanner(System.in);
                int shu = scanner.nextInt();
                int geShu = scanner.nextInt();
                if (shu < 0 || shu > 9)
                        return;
                int sum = shu;
                int maxShu = shu;
                for (int i = 1; i < geShu; i++)
                {
                        maxShu = maxShu * 10 + shu;
                        sum += maxShu;
                }
                System.out.println(sum);
        }

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-10 22:24:27 | 显示全部楼层
no28 编程求10000以内的完数。一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如 6=1+2+3.编程找出 1000 以内的所有完数。
package 小甲鱼活动;

public class _3_28
{

        public static void main(String[] args)
        {
                for (int i = 2; i <= 1000; i++)
                {
                        int amount = 1;
                        for (int j = 2; j < i; j++)
                        {
               if(0 == i % j){
                       amount += j;
               }
                        }
                        if(amount == i)
                                System.out.println(i);
                }
        }

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-10 22:26:36 | 显示全部楼层
no27 打印出如下图案(菱形)
package 小甲鱼活动;

public class _3_27
{

        public static void main(String[] args)
        {
                int bian = 7;
                int middleBian = bian / 2;
                for (int i = 0; i < middleBian; i++)
                {
                        for (int j = 0; j < middleBian - i; j++)
                        {
                                System.out.print(" ");
                        }
                        for (int j = 0; j < i * 2 + 1; j++)
                        {
                                System.out.print("*");
                        }
                        System.out.println();
                }
                for (int i = 0; i <= middleBian; i++)
                {
                        for (int k = 0; k < i; k++)
                        {
                                System.out.print(" ");
                        }
                        for (int j = 0; j < bian - i * 2; j++)
                        {
                                System.out.print("*");
                        }
                        System.out.println();
                }
        }

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-10 22:27:34 | 显示全部楼层
no26 请输入星期几的第一个字母来判断一下是星期几, 如果第一个字母一样, 则继续判断第二个字母。
package 小甲鱼活动;

import java.util.Scanner;

public class _3_26
{

        public static void main(String[] args)
        {
                // Monday, Tuesday, Wednesday, Thursday Friday Saturday, Sunday
                Scanner scanner = new Scanner(System.in);
                String input = scanner.nextLine().toLowerCase();
                //JDK switch支持字符串
                switch (input)
                {
                case "m":
                        System.out.println("星期一");
                        break;
                case "t":
                {
                        System.out.println("无法判断请输入第二个字母");
                        String secondInput = scanner.nextLine().toLowerCase();
                        if ("u".equals(secondInput))
                                System.out.println("星期二");
                        else if ("h".equals(secondInput))
                                System.out.println("星期四");
                        else
                                System.out.println("error");
                        break;
                }
                case "w":
                        System.out.println("星期三");
                        break;
                case "f":
                        System.out.println("星期五");
                        break;
                case "s":
                {
                        System.out.println("无法判断请输入第二个字母");
                        String secondInput = scanner.nextLine().toLowerCase();
                        if ("a".equals(secondInput))
                                System.out.println("星期六");
                        else if ("u".equals(secondInput))
                                System.out.println("星期天");
                        else
                                System.out.println("error");
                        break;
                }
                default:
                        System.out.println("error");
                }
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-10 22:28:09 | 显示全部楼层
no25 打印出杨辉三角形
package 小甲鱼活动;

import java.util.ArrayList;

public class _3_25
{

        public static void main(String[] args)
        {
                // 层数
                int levelNumber = 7;
                ArrayList<Integer> lastLevelNumbers = new ArrayList<>();
                ArrayList<Integer> thisLevelNumbers = new ArrayList<>();
                for (int i = 1; i <= levelNumber; i++)
                {
                        for (int j = 1; j <= i; j++)
                        {
                                if (1 == j || i == j)
                                        thisLevelNumbers.add(1);
                                else
                                {
                                        int leftTopNumber = lastLevelNumbers.get(j - 2).intValue();
                                        int rightTopNumber = lastLevelNumbers.get(j - 1).intValue();
                                        thisLevelNumbers.add(leftTopNumber + rightTopNumber);
                                }
                        }
                        for (int k = 0; k < levelNumber - i; k++)
                                System.out.printf("  ");
                        for (Integer nu : thisLevelNumbers)
                                System.out.printf("%2d  ",nu);
                        System.out.println();
                        lastLevelNumbers.clear();
                        lastLevelNumbers.addAll(thisLevelNumbers);
                        thisLevelNumbers.clear();
                }
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-10 22:30:39 | 显示全部楼层
no24 求一元二次方程的解(aX2 + bX + C = 0)
package 小甲鱼活动;

import java.util.Scanner;

public class _3_24
{

        public static void main(String[] args)
        {
                System.out.println("请依次输入二次项的二次项系数,一次项系数和常数项:");
                Scanner scanner = new Scanner(System.in);
                double two = scanner.nextDouble();
                double one = scanner.nextDouble();
                double constant = scanner.nextDouble();

                double derta = one * one - 4 * two * constant;
                if (0 > derta)
                        System.out.println("无解");
                else
                {
                        double sqrtDerta = Math.sqrt(derta);
                        double x1 = (-one + sqrtDerta) / 2 * two;
                        if (0 == derta)
                                System.out.println("x1=x2=" + x1);
                        else
                        {
                                double x2 = (-one - sqrtDerta) / 2 * two;
                                System.out.println("x1=" + x1 + " x2=" + x2);
                        }
                }

        }

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-10 22:31:12 | 显示全部楼层
no23 求一个偶数(大于6)表示为两个素数之和
package 小甲鱼活动;

import java.util.Scanner;

public class _3_23
{

        public static void main(String[] args)
        {
                System.out.println("输入一个大于6的偶数:");
                Scanner scanner = new Scanner(System.in);
                int input = scanner.nextInt();
                if (0 != (input & 1) || 6 > input)
                        System.out.println("输入不合法");
                else
                {
                        // 最小的素数为2
                        int k = input;
                        for (int i = 2; i < input / 2; i++)
                        {
                                k = input - i;
                                if (isPrimeNumber(i) && isPrimeNumber(k))
                                {
                                        System.out.println(input + "=" + i + "+" + (k));
                                }
                        }
                }
        }

        public static boolean isPrimeNumber(int number)
        {
                if (number < 2)
                        return false;
                // 一个数去除以比它的一半还要大的数,一定除不尽
                for (int i = 2; i <= number / 2; i++)
                {
                        if (0 == number % i)
                                return false;
                }
                return true;
        }

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-10 22:32:22 | 显示全部楼层
no21 String str = "a"+"b"+"c";总共创建了几个字符串?说明理由。
一个  编译器优化为 “abc在常量池

点评

创建了4个字符串,“a”,“b”,“c”在常量池,“abc”在堆里面  发表于 2015-2-24 23:00
+0 ,在考虑考虑!  发表于 2015-2-10 22:36
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-11 09:57:37 | 显示全部楼层
no21 String str = "a"+"b"+"c";总共创建了几个字符串?
就是只有一个 编译时就确定下来了。"abc"

点评

不对!  发表于 2015-2-13 02:02
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-13 16:24:39 | 显示全部楼层
第一版好了@百日维新

  1. package com.xl.fichc.fiveAnniversary;

  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.UnsupportedEncodingException;
  7. import java.text.SimpleDateFormat;
  8. import java.util.ArrayList;
  9. import java.util.Date;
  10. import java.util.List;
  11. import java.util.Random;
  12. import java.util.Scanner;

  13. public class FiveAnniversaryTest3 {

  14.         //no21 String str = "a"+"b"+"c";总共创建了几个字符串?说明理由。(15分)
  15.         /*只创建了一个字符串"abc"
  16.         编译时编译器直接将它们连接的结果进行赋值,该语句相当于String str = "abc";
  17.         然后当JVM执行到这一句的时候, 就在String pool里查找"abc",如果没有,就会创建一个 */
  18.        
  19.         //no22 计算字符串中子串出现的次数 (15分)
  20.         /*public static void main(String[] args) {
  21.                 //测试用例:在下面str中计算"aaa"出现的次数
  22.                 String str = "aaabcaaabfsaaajisjoaaagwoiaaagweogiaaagwesgeaaajgowaaa";
  23.                 String child="aaa";
  24.                 int count = checkNum(str,child);
  25.                 System.out.println(str+"中含有"+count+"个"+child);
  26.         }
  27.         public static int checkNum(String str,String child){
  28.                 int count=0;
  29.                 while(str.indexOf(child) != -1){
  30.                         count += 1;
  31.                         str = str.substring(str.indexOf(child)+child.length());
  32.                 }
  33.                 return count;
  34.         }*/

  35.         //no23 求一个偶数(大于6)表示为两个素数之和。(15分)
  36.         /*public static void main(String[] args) {
  37.                 System.out.print("请输入大于6的偶数:");
  38.                 int even = new Scanner(System.in).nextInt();
  39.                 List<Integer> list = new ArrayList<Integer>();
  40.                 //查找此数中的素数,并放到list中
  41.                 for(int i=2;i<even;i++){
  42.                         int j;
  43.                         for(j=2;j<i;j++){
  44.                                 if(i%j==0) break;
  45.                         }
  46.                         if(j==i) list.add(i);
  47.                 }
  48.                 //查找俩素数之和等于even
  49.                 for(int i=0;i<list.size();i++){
  50.                         for(int j=i+1;j<list.size();j++){
  51.                                 if(list.get(i)+list.get(j)==even){
  52.                                         System.out.println(even+"="+list.get(i)+"+"+list.get(j));
  53.                                 }
  54.                         }
  55.                 }
  56.         }*/
  57.        
  58.         //no24 求一元二次方程的解(aX2 + bX + C = 0)(15分)
  59.         /*public static void main(String[] args) {
  60.                 System.out.println("请输入a的值:");
  61.                 float a =new Scanner(System.in).nextFloat();
  62.                 System.out.println("请输入b的值:");
  63.                 float b =new Scanner(System.in).nextFloat();
  64.                 System.out.println("请输入c的值:");
  65.                 float c =new Scanner(System.in).nextFloat();
  66.                 if(a==0 && b!=0) System.out.println("x的值为:"+(-c/b));
  67.                 if(a==0 && b==0 && c!=0) System.out.println("此方程无解!");
  68.                 if(a==0 && b==0 && c==0) System.out.println("此方程有无穷个解!");
  69.                 float delta = b*b-4*a*c;
  70.                 if(a!=0){
  71.                         if(delta<0){
  72.                                 System.out.println("△<0,此方程无解!");
  73.                         }else if(delta==0){
  74.                                 System.out.println("此方程的解为:x="+(-b)/(2*a));
  75.                         }else{
  76.                                 double x1 = (-b+Math.sqrt(delta))/(2*a);
  77.                                 double x2 = (-b-Math.sqrt(delta))/(2*a);
  78.                                 System.out.println("此方程的解为:x1="+x1+",x2="+x2);
  79.                         }
  80.                 }
  81.         }*/
  82.        
  83.         //no25 打印出杨辉三角形(15分)
  84.         /*public static void main(String args[]) {
  85.                 System.out.print("请输入杨辉三角形的行数:");
  86.                 int r = new Scanner(System.in).nextInt();
  87.                 //初始化
  88.                 int a[][] = new int[r][];
  89.                 for(int i=0;i<r;i++) {
  90.                         a[i] = new int[i+1];
  91.                 }
  92.                 //赋值
  93.                 int res[][] = yanghui(a, r);
  94.                 //打印
  95.                 for(int i=0;i<r;i++) {
  96.                         for(int j=0;j<=res[i].length-1;j++)
  97.                                 System.out.print(res[i][j]+" ");
  98.                         System.out.println();
  99.                 }
  100.         }
  101.         public static int[][] yanghui(int a[][],int r){
  102.                 for(int i=0;i<r;i++)
  103.                         for(int j=0;j<=a[i].length-1;j++) {
  104.                                 if (i==0||j==0||j==a[i].length-1)
  105.                                         a[i][j] = 1;
  106.                                 else
  107.                                         a[i][j] = a[i-1][j-1]+a[i-1][j];
  108.                         }
  109.                 return a;
  110.         }*/
  111.        
  112.         //no26 请输入星期几的第一个字母来判断一下是星期几, 如果第一个字母一样, 则继续判断第二个字母。(15分)
  113.         /*public static void main(String[] args) {
  114.                 //Monday Tuesday Wednesday Thursday Friday Saturday Sunday
  115.                 System.out.print("请输入星期的首字母:");
  116.                 String first = new Scanner(System.in).next();
  117.                 String second = "";
  118.                 switch(first.toLowerCase()){
  119.                         case "m":
  120.                                 System.out.println(first+"对应的星期是Monday(星期一)");
  121.                                 break;
  122.                         case "t":
  123.                                 System.out.print("无法判断,请输入第二个字母:");
  124.                                 second = new Scanner(System.in).next();
  125.                                 if(second.equalsIgnoreCase("u")){
  126.                                         System.out.println(first+second+"对应的星期是Tuesday(星期二)");
  127.                                 }else if(second.equalsIgnoreCase("h")){
  128.                                         System.out.println(first+second+"对应的星期是Thursday(星期四)");
  129.                                 }else{
  130.                                         System.out.println("无对应的星期");
  131.                                 }
  132.                                 break;
  133.                         case "w":
  134.                                 System.out.println(first+"对应的星期是Wednesday(星期三)");
  135.                                 break;
  136.                         case "f":
  137.                                 System.out.println(first+"对应的星期是Friday(星期五)");
  138.                                 break;
  139.                         case "s":
  140.                                 System.out.print("无法判断,请输入第二个字母:");
  141.                                 second = new Scanner(System.in).next();
  142.                                 if(second.equalsIgnoreCase("a")){
  143.                                         System.out.println(first+second+"对应的星期是Saturday(星期六)");
  144.                                 }else if(second.equalsIgnoreCase("u")){
  145.                                         System.out.println(first+second+"对应的星期是Thursday(星期日)");
  146.                                 }else{
  147.                                         System.out.println("无对应的星期");
  148.                                 }
  149.                                 break;
  150.                         default:
  151.                                 System.out.println("无对应的星期");
  152.                 }
  153.         }*/
  154.        
  155. //        no27 打印出如下图案(菱形)(15分)
  156. //           *
  157. //          ***
  158. //         *****
  159. //        *******
  160. //         *****
  161. //          ***
  162. //           *

  163.         /*public static void main(String[] args) {
  164.                 System.out.print("请输入菱形的行数:");
  165.                 int row = new Scanner(System.in).nextInt();
  166.                 for(int i=1;i<row;i++){
  167.                         for(int j=row-i;j>=0;j--){
  168.                                 System.out.print(" ");
  169.                         }
  170.                         for(int j=1;j<=2*i-1;j++){
  171.                                 System.out.print("*");
  172.                         }
  173.                         System.out.println();
  174.                 }
  175.                 for(int i=row;i>0;i--){
  176.                         for(int j=row-i;j>=0;j--){
  177.                                 System.out.print(" ");
  178.                         }
  179.                         for(int j=2*i-1;j>0;j--){
  180.                                 System.out.print("*");
  181.                         }
  182.                         System.out.println();
  183.                 }
  184.         }*/
  185.         //no28 编程求10000以内的完数。一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如 6=1+2+3.编程找出 1000 以内的所有完数。(15分)
  186.         /*public static void main(String[] args) {
  187.                 int num = 10000;
  188.                 System.out.println(num+"以内的完全数有:");
  189.                 for(int i=1;i<=num;i++){
  190.                         if(isPerfectNumber(i)){
  191.                                 System.out.print(i+"  ");
  192.                         }
  193.                 }
  194.         }
  195.         public static boolean isPerfectNumber(int num){
  196.                 int sum = 0;
  197.                 for(int i=1;i<num;i++){
  198.                         if(num%i==0){
  199.                                 sum +=i;
  200.                         }
  201.                 }
  202.                 if(sum==num){
  203.                         return true;
  204.                 }
  205.                 return false;
  206.         }*/
  207.        
  208.         //no29 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。(15分)
  209.         /*public static void main(String[] args) {
  210.                 System.out.print("请输入a的值:");
  211.                 int a = new Scanner(System.in).nextInt();
  212.                 System.out.print("请输入个数:");
  213.                 int num = new Scanner(System.in).nextInt();
  214.                
  215.                 int sum = 0;
  216.                 int temp=0;
  217.                 for(int i=1;i<=num;i++){
  218.                         temp = temp*10+a;
  219.                         sum += temp;
  220.                         if(i==num){
  221.                                 System.out.print(temp+"=");
  222.                         }
  223.                         else{
  224.                                 System.out.print(temp+"+");
  225.                         }
  226.                 }
  227.                 System.out.println(sum);
  228.         }*/
  229.        
  230.         //no30 用程序说明Java 的==与 equals 的区别(20分)
  231.         /*public static void main(String[] args) {
  232.                 //呃,简单来说,"=="表示是否是同个对象,"equal"表示对象的值是否相同
  233.                 String str1 = new String("abc");
  234.                 String str2 = new String("abc");
  235.                 String str3 = "abc";
  236.                 String str4 = "abc";
  237.                 System.out.println(str1.equals(str2));
  238.                 System.out.println(str1==str2);
  239.                 System.out.println("====================");
  240.                 System.out.println(str2.equals(str3));
  241.                 System.out.println(str2==str3);
  242.                 System.out.println("====================");
  243.                 System.out.println(str3.equals(str4));
  244.                 System.out.println(str3==str4);
  245.         }*/
  246.        
  247. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-15 16:59:55 | 显示全部楼层
来晚了:sadNo1:
      String str = "a"+"b"+"c";只创建了一个对象,其中"a"、"b"、"c" 都是字符串常量。
No2:
  1. /**
  2. * 计算字符串中子串出现的次数
  3. * @author wwwxinyu1990
  4. *
  5. */
  6. public class SubstringCount {
  7.         public static void main(String[] args) {
  8.                 String str = "asdfsdgasfgjasdgjjhdfjghaghjasjglfkasdhsdlgsdfgl";
  9.                 String subStr = "sd";
  10.                
  11.                 // 输出子串出现的次数
  12.                 System.out.println(getSubStrCount(str, subStr));
  13.                
  14.         }
  15.        
  16.         /**
  17.          * 计算字串出现的次数
  18.          * @param str 字符串
  19.          * @param subStr 包含的子串
  20.          * @return 子串出现的次数
  21.          */
  22.         public static int getSubStrCount(String str, String subStr) {
  23.                 if (str == null
  24.                                 || str.length() == 0
  25.                                 || subStr == null
  26.                                 || subStr.length() == 0
  27.                                 || str.length() < subStr.length()) {
  28.                         return 0;
  29.                 }
  30.                
  31.                 String replacedStr = str.replace(subStr, "");
  32.                
  33.                 return (str.length() - replacedStr.length()) / subStr.length();
  34.         }
  35. }
复制代码

No3:
  1. import java.util.Scanner;

  2. /**
  3. * 求一个偶数(大于6)表示为两个素数之和。
  4. * @author wwwxinyu1990
  5. *
  6. */
  7. public class Test {
  8.         public static void main(String[] args) {
  9.                 System.out.println("请输入一个大于6的偶数:");
  10.                 Scanner sc = new Scanner(System.in);
  11.                 int n = sc.nextInt();
  12.                
  13.                 // 判断是否为大于6的偶数
  14.                 if (n < 6 || n % 2 != 0) {
  15.                         System.out.println("输入不正确!");
  16.                 }
  17.                
  18.                 for (int i = 2; i <= n; i++) {
  19.                         if (isPrime(i) && isPrime(n - i)) {
  20.                                 System.out.println("结果是:" + n + "=" + i + "+" + (n - i));
  21.                                 break;
  22.                         }
  23.                 }
  24.                
  25.                 // 关闭输入流
  26.                 if (sc != null) {
  27.                         sc.close();
  28.                 }
  29.                
  30.         }
  31.        
  32.         /**
  33.          * 判断因数是否为素数
  34.          * @param n
  35.          * @return 是素数返回true,不是返回false
  36.          */
  37.         private static boolean isPrime(int n) {
  38.                 for (int i = 2; i < n; i++){
  39.                         if (n % i == 0) {
  40.                                 return false;
  41.                         }
  42.                 }
  43.                 return true;
  44.         }
  45. }
复制代码

No4:
  1. import java.util.Scanner;

  2. /**
  3. * 求一个偶数(大于6)表示为两个素数之和。
  4. * @author wwwxinyu1990
  5. *
  6. */
  7. public class Test {
  8.         public static void main(String[] args) {
  9.                 Scanner sc = new Scanner(System.in);
  10.                 System.out.println("请输入a的值:");
  11.                 int a = sc.nextInt();
  12.                 System.out.println("请输入b的值:");
  13.                 int b = sc.nextInt();
  14.                 System.out.println("请输入c的值:");
  15.                 int c = sc.nextInt();

  16.                 if(b*b - 4*a*c < 0){
  17.                         System.out.println("对不起,次方程无解!");
  18.                 }else if(b*b - 4*a*c == 0){
  19.                         System.out.println("此方程解x=" + -b/(2*a));
  20.                 }else{
  21.                         System.out.println("此方程解x1=" + ((-b+ "/"+ 2*a
  22.                                         + "+√(" + (b*b - 4*a*c)) +")/" +(2*a)) + " , x2="
  23.                                         + ((-b+ "/"+ 2*a + "-√(" + (b*b - 4*a*c)) +")/" + (2*a)));
  24.                 }
  25.                
  26.                 if (sc != null) {
  27.                         sc.close();
  28.                 }
  29.         }
  30. }
复制代码

No5:
  1. import java.util.Scanner;

  2. /**
  3. * 打印出杨辉三角形。
  4. * @author wwwxinyu1990
  5. *
  6. */
  7. public class Test {
  8.         public static void main(String[] args) {
  9.                 Scanner sc = new Scanner(System.in);
  10.                 System.out.println("请输入输出的行数:");
  11.                 int rowInt = sc.nextInt();
  12.                
  13.                 int triangle[][]=new int[rowInt][rowInt * 2 - 1];
  14.                
  15.                 for(int i = 0;i < rowInt;i++){
  16.                         for(int j = 0;j < rowInt * 2 -1;j++){
  17.                                 triangle[i][j] = -1;
  18.                         }
  19.                 }
  20.                
  21.                 for(int i = 0;i < rowInt;i++){
  22.                         triangle[(rowInt * 2 - 1) / 2 - i][i] = 1;
  23.                         triangle[(rowInt * 2 - 1) / 2 - i][rowInt * 2 - 1 - i - 1] = 1;
  24.                 }

  25.                 for(int i = 2;i < rowInt;i++){
  26.                         for(int j = 0;j < rowInt * 2 -1;j++){
  27.                                 if(j > rowInt - i - 1
  28.                                                 && j < rowInt * 2 - 1 - 1
  29.                                                 && triangle[i - 1][j -1] != -1
  30.                                                 && triangle[i -1][j + 1] != -1)
  31.                                         triangle[i][j] = triangle[i - 1][j -1] + triangle[i -1][j + 1];
  32.                         }
  33.                 }

  34.                 for(int i = 0;i < rowInt;i++){
  35.                         for(int j = 0;j < rowInt * 2 - 1;j++){
  36.                                 if(triangle[i][j] == -1){
  37.                                         // 用printf方法以3个格输出字符串
  38.                                         System.out.printf("%3s"," ");
  39.                                 } else{
  40.                                         // 用printf方法以3个格输出数字
  41.                                         System.out.printf("%3d",triangle[i][j]);
  42.                                 }
  43.                         }
  44.                         System.out.println();
  45.                 }
  46.                
  47.                 if (sc != null) {
  48.                         sc.close();
  49.                 }
  50.         }
  51. }
复制代码

No6:
  1. import java.util.Scanner;

  2. /**
  3. * 请输入星期几的第一个字母来判断一下是星期几, 如果第一个字母一样, 则继续判断第二个字母
  4. * @author wwwxinyu1990
  5. *
  6. */
  7. public class Test {
  8.         public static void main(String[] args) {
  9.                 Scanner sc = new Scanner(System.in);
  10.                 System.out.println("请输入星期的缩写(最少三位):");
  11.                 String week = sc.nextLine();
  12.                
  13.                 if (week == null || week.length() == 0) {
  14.                         System.out.println("请重新启动程序并按要求输入");
  15.                 }
  16.                 week = week.toUpperCase();
  17.                 char firstChar = week.charAt(0);
  18.                 char secondChar = week.charAt(1);
  19.                 switch(firstChar) {
  20.                         case 'M':
  21.                                 System.out.println("星期一");
  22.                                 break;
  23.                         case 'T':
  24.                                 switch (secondChar) {
  25.                                         case 'U':
  26.                                                 System.out.println("星期二");
  27.                                                 break;
  28.                                         case 'H':
  29.                                                 System.out.println("星期四");
  30.                                                 break;
  31.                                 }
  32.                                 break;
  33.                         case 'W':
  34.                                 System.out.println("星期三");
  35.                                 break;
  36.                         case 'F':
  37.                                 System.out.println("星期五");
  38.                                 break;
  39.                         case 'S':
  40.                                 switch (secondChar) {
  41.                                         case 'A':
  42.                                                 System.out.println("星期六");
  43.                                                 break;
  44.                                         case 'U':
  45.                                                 System.out.println("星期日");
  46.                                                 break;
  47.                                 }
  48.                         default:
  49.                                 System.out.println("输入不正确");
  50.                                 break;
  51.                 }
  52.                
  53.                 if (sc != null) {
  54.                         sc.close();
  55.                 }
  56.         }
  57. }
复制代码

No7:
  1. /**
  2. * 打印出菱形
  3. * @author wwwxinyu1990
  4. *
  5. */
  6. public class Test {
  7.         public static void main(String[] args) {
  8.                 int n = 7;
  9.                 for (int i = 0; i < n; i++ ) {
  10.                         if (i<=(n-1)/2) {
  11.                                 for (int j = i; j<(n-1)/2; j++) {
  12.                                         System.out.print(" ");
  13.                                 }
  14.                                 for (int k = 0; k<2*i+1; k++) {
  15.                                         System.out.print("*");
  16.                                 }
  17.                         } else {
  18.                                 for (int j = 0; j<i-(n-1)/2; j++) {
  19.                                         System.out.print(" ");
  20.                                 }
  21.                                
  22.                                 for (int k = 0; k<2*(n-i)-1; k++) {
  23.                                         System.out.print("*");
  24.                                 }
  25.                         }
  26.                         System.out.println();
  27.                 }
  28.         }
  29. }
复制代码

No8:
  1. /**
  2. * 求10000以内的完数
  3. *         一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。
  4. * @author wwwxinyu1990
  5. *
  6. */
  7. public class Test {
  8.         public static void main(String[] args) {
  9.                 for (int i = 1; i <= 10000; i++) {
  10.                         // 定义因子之和变量
  11.                         int temp = 0;
  12.                         for (int n = 1; n < i / 2 + 1; n++) {
  13.                                 if (i % n == 0) {
  14.                                         // 能被整除的除数则被加到temp中
  15.                                         temp += n;
  16.                                 }
  17.                         }
  18.                         // 如果因子之和与原数相等的话,说明是完数
  19.                         if (temp == i) {
  20.                                 // 输出完数  
  21.                                 System.out.print(i + " ");
  22.                         }
  23.                 }
  24.         }
  25. }
复制代码

No9:
  1. import java.util.Scanner;

  2. /**
  3. * 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
  4. *   例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制
  5. * @author wwwxinyu1990
  6. *
  7. */
  8. public class Test {
  9.         public static void main(String[] args) {
  10.                 Scanner sc = new Scanner(System.in);
  11.                 System.out.println("请输入因子a的值:");
  12.                 int a = sc.nextInt();
  13.                 System.out.println("请问求多少个数的和?");
  14.                 int n = sc.nextInt();
  15.                
  16.                 // 结果
  17.                 int sum = 0;
  18.                 for(int i = 0 ; i < n ; i++){
  19.                         sum+=a*fun(i);
  20.                 }
  21.                 System.out.println(sum);
  22.                
  23.                 if (sc != null) {
  24.                         sc.close();
  25.                 }
  26.         }
  27.        
  28.         public static double fun(int m){
  29.                 if (m == 0)
  30.                         return 1;
  31.                
  32.                 return Math.pow(10, m) + fun(--m);
  33.         }
  34. }
复制代码

No10:
  1. /**
  2. * 用程序说明Java 的==与 equals 的区别
  3. *   区别是:
  4. *                当比较的是基本数据类型,应该使用双等号,比较的是值。
  5. *                当比较的复合数据类型(类):
  6. *                        没有覆写equals方法的话,双等号和equals方法比较的都是在内存中的存放位置的地址值。
  7. *                        在一些类库当中把equals方法覆盖掉了,如String,Integer,Date这些类,equals方法就
  8. *                        不再是比较的是地址值
  9. * @author wwwxinyu1990
  10. *
  11. */
  12. public class Test {
  13.         public static void main(String[] args) {
  14.                 String str1 = "test";
  15.                 String str2 = "test";
  16.                 String str3 = new String("test");
  17.                
  18.                 if (str1 == str2) {
  19.                         System.out.println("str1 == str2");
  20.                 } else {
  21.                         System.out.println("str1 != str2");
  22.                 }
  23.                
  24.                 if (str1 == str3) {
  25.                         System.out.println("str1 == str3");
  26.                 } else {
  27.                         System.out.println("str1 != str3");
  28.                 }
  29.                
  30.                 if (str1.equals(str3)) {
  31.                         System.out.println("str1 equals str3");
  32.                 } else {
  33.                         System.out.println("str1 not equals str3");
  34.                 }
  35.         }
  36. }
复制代码


点评

No21,No26有问题,其他通过!  发表于 2015-2-18 00:12
/** * 请输入星期几的第一个字母来判断一下是星期几, 如果第一个字母一样, 则继续判断第二个字母 * @author wwwxinyu1990 * */ No26修改一下吧,你看你注释都写了这么清楚,先输入个字母,如果相同在输入   发表于 2015-2-18 00:10
大爷,我问的是创建了几个字符串!你回答几个然后说说你的理由既可  发表于 2015-2-17 23:43
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-19 18:00:02 | 显示全部楼层
No21
我觉得是5个。"a","b","c","ab","abc"。
首先先有"a","b","c"这三个字符串。然后执行"a"+"b",生成"ab"字符串,然后执行"ab"+"c",生成"abc"。
如果String str算的话就是6个……
No22
这个有点乱……
  1. import java.util.Scanner;

  2. public class No22 {
  3.         public static void main(String[] args) {
  4.                 int count = 0, len1, i, j;
  5.                 String s1, s2;
  6.                 Scanner sc = new Scanner(System.in);
  7.                 System.out.println("请输入字符串:");
  8.                 s1 = sc.nextLine();
  9.                 System.out.println("请输入子串:");
  10.                 s2 = sc.nextLine();
  11.                 len1 = s1.length();
  12.                 for (i = 0; i < s1.length(); i++, len1--) {
  13.                         if (len1 < s2.length()) {
  14.                                 break;
  15.                         }
  16.                         if (s1.charAt(i) == s2.charAt(0)) {
  17.                                 for (j = 1; j < s2.length(); j++) {
  18.                                         if (s1.charAt(i + j) != s2.charAt(j)) {
  19.                                                 break;
  20.                                         }
  21.                                 }
  22.                                 if (j == s2.length()) {
  23.                                         count++;
  24.                                 }
  25.                         }
  26.                 }
  27.                 System.out.println("子串数量为:" + count);
  28.                 sc.close();
  29.         }
  30. }
复制代码

No23
  1. import java.util.Scanner;

  2. public class No23 {
  3.         public static void main(String[] args) {
  4.                 Scanner sc = new Scanner(System.in);
  5.                 int num;
  6.                 System.out.println("请输入大于6的偶数");
  7.                 num = sc.nextInt();
  8.                 if (num <= 6 || num % 2 != 0) {
  9.                         System.out.println("输入的数字不符合要求。");
  10.                 } else {
  11.                         for (int i = 1; i <= num / 2; i++) {
  12.                                 if (prime(i) && prime(num - i)) {
  13.                                         System.out.println(num + "=" + i + "+" + (num - i));
  14.                                         break; // 如果需要输出全部可能则将此行去掉。
  15.                                 }
  16.                         }
  17.                 }
  18.                 sc.close();
  19.         }

  20.         static boolean prime(int i) {
  21.                 if (i == 1) {
  22.                         return false;
  23.                 } else {
  24.                         for (int j = 2; j <= Math.sqrt(i); j++) {
  25.                                 if (i % j == 0) {
  26.                                         return false;
  27.                                 }
  28.                         }
  29.                         return true;
  30.                 }

  31.         }
  32. }
复制代码

No24
  1. import java.util.Scanner;

  2. public class No24 {
  3.         public static void main(String[] args) {
  4.                 int a, b, c;
  5.                 double p, q, deta;
  6.                 Scanner sc = new Scanner(System.in);
  7.                 System.out.println("请分别依次输入二次项系数、一次项系数和常数项,用空格隔开:");
  8.                 a = sc.nextInt();
  9.                 b = sc.nextInt();
  10.                 c = sc.nextInt();
  11.                 if (a == 0) {
  12.                         System.out.println("输入的不是一元二次方程。");
  13.                 } else {
  14.                         deta = b * b - 4 * a * c;
  15.                         if (deta == 0) {
  16.                                 System.out.println("X1 = X2 = " + (-b / 2 / a));
  17.                         } else if (deta > 0) {
  18.                                 p = -b / (2 * a);
  19.                                 q = Math.sqrt(deta) / (2 * a);
  20.                                 System.out.println("X1 = " + (p + q));
  21.                                 System.out.println("X1 = " + (p - q));
  22.                         } else {
  23.                                 p = -b / (2 * a);
  24.                                 q = Math.sqrt(-deta) / (2 * a);
  25.                                 System.out.println("X1 = " + p + "i" + "+" + q);
  26.                                 System.out.println("X1 = " + p + "i" + "-" + q);
  27.                         }
  28.                 }
  29.                 sc.close();
  30.         }
  31. }
复制代码

No25
  1. import java.util.Scanner;

  2. public class No25 {
  3.         public static void main(String[] args) {
  4.                 int n;
  5.                 Scanner sc = new Scanner(System.in);
  6.                 System.out.println("请输入需要打印杨辉三角的行数:");
  7.                 n = sc.nextInt();
  8.                 int[][] yang = new int[n][];
  9.                 for (int i = 0; i < n; i++) {
  10.                         yang[i] = new int[i + 1];
  11.                         for (int j = 0; j <= i; j++) {
  12.                                 if (j == 0 || j == i) {
  13.                                         yang[i][j] = 1;
  14.                                 } else {
  15.                                         yang[i][j] = yang[i - 1][j - 1] + yang[i - 1][j];
  16.                                 }
  17.                         }
  18.                 }
  19.                 for (int p = 0; p < n; p++) {
  20.                         for (int q = 0; q < yang[p].length; q++) {
  21.                                 System.out.print(yang[p][q] + " ");
  22.                         }
  23.                         System.out.println();
  24.                 }
  25.                 sc.close();
  26.         }
  27. }
复制代码

No26
  1. import java.util.Scanner;

  2. public class No26 {
  3.         public static void main(String[] args) {
  4.                 String s;
  5.                 Scanner sc = new Scanner(System.in);
  6.                 System.out.println("请输入星期的第一个字母:");
  7.                 s = sc.nextLine();
  8.                 if (run(s.toLowerCase())) {
  9.                         System.out.println("无法判断,请输入第二个字母:");
  10.                         s += sc.nextLine();
  11.                         next(s.toLowerCase());
  12.                 }
  13.                 sc.close();
  14.         }

  15.         static boolean run(String s) {
  16.                 switch (s) {
  17.                 case "m":
  18.                         System.out.println("是星期一,Monday。");
  19.                         return false;
  20.                 case "w":
  21.                         System.out.println("是星期三,Wednesday。");
  22.                         return false;
  23.                 case "f":
  24.                         System.out.println("是星期五,Friday。");
  25.                         return false;
  26.                 case "s":
  27.                 case "t":
  28.                         return true;
  29.                 default:
  30.                         System.out.println("输入有误");
  31.                         return false;
  32.                 }
  33.         }

  34.         static void next(String s) {
  35.                 switch (s) {
  36.                 case "su":
  37.                         System.out.println("是星期日,Sunday。");
  38.                         break;
  39.                 case "sa":
  40.                         System.out.println("是星期六,Saturday。");
  41.                         break;
  42.                 case "th":
  43.                         System.out.println("是星期四,Thursday。");
  44.                         break;
  45.                 case "tu":
  46.                         System.out.println("是星期三,Tuesday。");
  47.                         break;
  48.                 default:
  49.                         System.out.println("输入有误");
  50.                         break;
  51.                 }
  52.         }
  53. }
复制代码

No27
这个竟然搞得我有点晕……
  1. public class No27 {
  2.         public static void main(String[] args) {
  3.                 int num = 4;
  4.                 for (int i = 0; i < num; i++) {
  5.                         for (int m = 0; m < num - i - 1; m++) {
  6.                                 System.out.print(" ");
  7.                         }
  8.                         for (int n = 0; n < i * 2 + 1; n++) {
  9.                                 System.out.print("*");
  10.                         }
  11.                         System.out.println();
  12.                 }
  13.                 for (int i = 0; i < num - 1; i++) {
  14.                         for (int m = 0; m < i + 1; m++) {
  15.                                 System.out.print(" ");
  16.                         }
  17.                         for (int n = 0; n < (num - i - 1) * 2 - 1; n++) {
  18.                                 System.out.print("*");
  19.                         }
  20.                         System.out.println();
  21.                 }
  22.         }
  23. }
复制代码

No28
  1. public class No28 {
  2.         public static void main(String[] args) {
  3.                 int sum;
  4.                 System.out.println("10000内的完数有:");
  5.                 for (int i = 3, j; i < 10000; i++) {
  6.                         sum = 1;
  7.                         for (j = 2; j < Math.sqrt(i); j++) {
  8.                                 if (i % j == 0) {
  9.                                         sum += j + (i / j);
  10.                                 }
  11.                         }
  12.                         if (j == Math.sqrt(i)) {
  13.                                 sum += j;
  14.                         }
  15.                         if (sum == i) {
  16.                                 System.out.println(i);
  17.                         }
  18.                 }
  19.         }
  20. }
复制代码

No29
  1. import java.util.Scanner;

  2. public class No29 {
  3.         public static void main(String[] args) {
  4.                 int a, n, sum = 0, temp = 0;
  5.                 Scanner sc = new Scanner(System.in);
  6.                 System.out.println("请以此输入a的值和相加的个数,用空格分开");
  7.                 a = sc.nextInt();
  8.                 n = sc.nextInt();
  9.                 for (int i = 0; i < n; i++) {
  10.                         temp = temp * 10 + 1;
  11.                         sum += temp;
  12.                 }
  13.                 sum *= a;
  14.                 System.out.println("最后结果为:" + sum);
  15.                 sc.close();
  16.         }
  17. }
复制代码

No30
  1. public class No30 {
  2.         public static void main(String[] args) {
  3.                 String s1 = "123";
  4.                 String s2 = "123";
  5.                 String s3 = new String("123");
  6.                 String s4 = new String("123");
  7.                 System.out.println("s1==s2          " + (s1 == s2));
  8.                 System.out.println("s1==s3          " + (s1 == s3));
  9.                 System.out.println("s3==s4          " + (s3 == s4));
  10.                 System.out.println("s1.equals(s2)   " + (s1.equals(s2)));
  11.                 System.out.println("s1.equals(s3)   " + (s1.equals(s3)));
  12.                 System.out.println("s3.equals(s4)   " + (s3.equals(s4)));
  13.         }
  14. }
复制代码

这次有几个写的有些乱- -,不会改了,就先这样吧……
另外,新年快乐~

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-20 10:10:19 | 显示全部楼层
wwwxinyu1990 发表于 2015-2-15 16:59
来晚了No1:
      String str = "a"+"b"+"c";只创建了一个对象,其中"a"、"b"、"c" 都是字符串常量。
...

奥奥,错了~这几天一直没时间,我回头再改下吧{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 04:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表