百日维新 发表于 2015-2-9 20:31:04

#鱼C五周年嘉年华# 《JAVA程序设计&改错》# 第三章

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







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分)




小龙_h 发表于 2015-2-10 10:22:36

抢沙发啦
{:9_217:}

花生 发表于 2015-2-10 10:54:27

String str = "a"+"b"+"c";总共创建了几个字符串?说明理由。
共5个
“a”,"b","c","ab","abc"

花生 发表于 2015-2-10 22:21:53

No30 用程序说明Java 的==与 equals 的区别

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

花生 发表于 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);
        }

}

花生 发表于 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);
                }
        }

}

花生 发表于 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();
                }
        }

}

花生 发表于 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");
                }
        }
}

花生 发表于 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();
                }
        }
}

花生 发表于 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);
                        }
                }

        }

}

花生 发表于 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;
        }

}

花生 发表于 2015-2-10 22:32:22

no21 String str = "a"+"b"+"c";总共创建了几个字符串?说明理由。
一个编译器优化为 “abc在常量池

花生 发表于 2015-2-11 09:57:37

no21 String str = "a"+"b"+"c";总共创建了几个字符串?
就是只有一个 编译时就确定下来了。"abc"

小龙_h 发表于 2015-2-13 16:24:39

第一版好了@百日维新
{:9_227:}
package com.xl.fichc.fiveAnniversary;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

public class FiveAnniversaryTest3 {

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

        //no23 求一个偶数(大于6)表示为两个素数之和。(15分)
        /*public static void main(String[] args) {
                System.out.print("请输入大于6的偶数:");
                int even = new Scanner(System.in).nextInt();
                List<Integer> list = new ArrayList<Integer>();
                //查找此数中的素数,并放到list中
                for(int i=2;i<even;i++){
                        int j;
                        for(j=2;j<i;j++){
                                if(i%j==0) break;
                        }
                        if(j==i) list.add(i);
                }
                //查找俩素数之和等于even
                for(int i=0;i<list.size();i++){
                        for(int j=i+1;j<list.size();j++){
                                if(list.get(i)+list.get(j)==even){
                                        System.out.println(even+"="+list.get(i)+"+"+list.get(j));
                                }
                        }
                }
        }*/
       
        //no24 求一元二次方程的解(aX2 + bX + C = 0)(15分)
        /*public static void main(String[] args) {
                System.out.println("请输入a的值:");
                float a =new Scanner(System.in).nextFloat();
                System.out.println("请输入b的值:");
                float b =new Scanner(System.in).nextFloat();
                System.out.println("请输入c的值:");
                float c =new Scanner(System.in).nextFloat();
                if(a==0 && b!=0) System.out.println("x的值为:"+(-c/b));
                if(a==0 && b==0 && c!=0) System.out.println("此方程无解!");
                if(a==0 && b==0 && c==0) System.out.println("此方程有无穷个解!");
                float delta = b*b-4*a*c;
                if(a!=0){
                        if(delta<0){
                                System.out.println("△<0,此方程无解!");
                        }else if(delta==0){
                                System.out.println("此方程的解为:x="+(-b)/(2*a));
                        }else{
                                double x1 = (-b+Math.sqrt(delta))/(2*a);
                                double x2 = (-b-Math.sqrt(delta))/(2*a);
                                System.out.println("此方程的解为:x1="+x1+",x2="+x2);
                        }
                }
        }*/
       
        //no25 打印出杨辉三角形(15分)
        /*public static void main(String args[]) {
                System.out.print("请输入杨辉三角形的行数:");
                int r = new Scanner(System.in).nextInt();
                //初始化
                int a[][] = new int[];
                for(int i=0;i<r;i++) {
                        a = new int;
                }
                //赋值
                int res[][] = yanghui(a, r);
                //打印
                for(int i=0;i<r;i++) {
                        for(int j=0;j<=res.length-1;j++)
                                System.out.print(res+" ");
                        System.out.println();
                }
        }
        public static int[][] yanghui(int a[][],int r){
                for(int i=0;i<r;i++)
                        for(int j=0;j<=a.length-1;j++) {
                                if (i==0||j==0||j==a.length-1)
                                        a = 1;
                                else
                                        a = a+a;
                        }
                return a;
        }*/
       
        //no26 请输入星期几的第一个字母来判断一下是星期几, 如果第一个字母一样, 则继续判断第二个字母。(15分)
        /*public static void main(String[] args) {
                //Monday Tuesday Wednesday Thursday Friday Saturday Sunday
                System.out.print("请输入星期的首字母:");
                String first = new Scanner(System.in).next();
                String second = "";
                switch(first.toLowerCase()){
                        case "m":
                                System.out.println(first+"对应的星期是Monday(星期一)");
                                break;
                        case "t":
                                System.out.print("无法判断,请输入第二个字母:");
                                second = new Scanner(System.in).next();
                                if(second.equalsIgnoreCase("u")){
                                        System.out.println(first+second+"对应的星期是Tuesday(星期二)");
                                }else if(second.equalsIgnoreCase("h")){
                                        System.out.println(first+second+"对应的星期是Thursday(星期四)");
                                }else{
                                        System.out.println("无对应的星期");
                                }
                                break;
                        case "w":
                                System.out.println(first+"对应的星期是Wednesday(星期三)");
                                break;
                        case "f":
                                System.out.println(first+"对应的星期是Friday(星期五)");
                                break;
                        case "s":
                                System.out.print("无法判断,请输入第二个字母:");
                                second = new Scanner(System.in).next();
                                if(second.equalsIgnoreCase("a")){
                                        System.out.println(first+second+"对应的星期是Saturday(星期六)");
                                }else if(second.equalsIgnoreCase("u")){
                                        System.out.println(first+second+"对应的星期是Thursday(星期日)");
                                }else{
                                        System.out.println("无对应的星期");
                                }
                                break;
                        default:
                                System.out.println("无对应的星期");
                }
        }*/
       
//        no27 打印出如下图案(菱形)(15分)
//           *
//          ***
//       *****
//        *******
//       *****
//          ***
//           *

        /*public static void main(String[] args) {
                System.out.print("请输入菱形的行数:");
                int row = new Scanner(System.in).nextInt();
                for(int i=1;i<row;i++){
                        for(int j=row-i;j>=0;j--){
                                System.out.print(" ");
                        }
                        for(int j=1;j<=2*i-1;j++){
                                System.out.print("*");
                        }
                        System.out.println();
                }
                for(int i=row;i>0;i--){
                        for(int j=row-i;j>=0;j--){
                                System.out.print(" ");
                        }
                        for(int j=2*i-1;j>0;j--){
                                System.out.print("*");
                        }
                        System.out.println();
                }
        }*/
        //no28 编程求10000以内的完数。一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如 6=1+2+3.编程找出 1000 以内的所有完数。(15分)
        /*public static void main(String[] args) {
                int num = 10000;
                System.out.println(num+"以内的完全数有:");
                for(int i=1;i<=num;i++){
                        if(isPerfectNumber(i)){
                                System.out.print(i+"");
                        }
                }
        }
        public static boolean isPerfectNumber(int num){
                int sum = 0;
                for(int i=1;i<num;i++){
                        if(num%i==0){
                                sum +=i;
                        }
                }
                if(sum==num){
                        return true;
                }
                return false;
        }*/
       
        //no29 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。(15分)
        /*public static void main(String[] args) {
                System.out.print("请输入a的值:");
                int a = new Scanner(System.in).nextInt();
                System.out.print("请输入个数:");
                int num = new Scanner(System.in).nextInt();
               
                int sum = 0;
                int temp=0;
                for(int i=1;i<=num;i++){
                        temp = temp*10+a;
                        sum += temp;
                        if(i==num){
                                System.out.print(temp+"=");
                        }
                        else{
                                System.out.print(temp+"+");
                        }
                }
                System.out.println(sum);
        }*/
       
        //no30 用程序说明Java 的==与 equals 的区别(20分)
        /*public static void main(String[] args) {
                //呃,简单来说,"=="表示是否是同个对象,"equal"表示对象的值是否相同
                String str1 = new String("abc");
                String str2 = new String("abc");
                String str3 = "abc";
                String str4 = "abc";
                System.out.println(str1.equals(str2));
                System.out.println(str1==str2);
                System.out.println("====================");
                System.out.println(str2.equals(str3));
                System.out.println(str2==str3);
                System.out.println("====================");
                System.out.println(str3.equals(str4));
                System.out.println(str3==str4);
        }*/
       
}

wwwxinyu1990 发表于 2015-2-15 16:59:55

来晚了:sadNo1:
      String str = "a"+"b"+"c";只创建了一个对象,其中"a"、"b"、"c" 都是字符串常量。
No2:
/**
* 计算字符串中子串出现的次数
* @author wwwxinyu1990
*
*/
public class SubstringCount {
        public static void main(String[] args) {
                String str = "asdfsdgasfgjasdgjjhdfjghaghjasjglfkasdhsdlgsdfgl";
                String subStr = "sd";
               
                // 输出子串出现的次数
                System.out.println(getSubStrCount(str, subStr));
               
        }
       
        /**
       * 计算字串出现的次数
       * @param str 字符串
       * @param subStr 包含的子串
       * @return 子串出现的次数
       */
        public static int getSubStrCount(String str, String subStr) {
                if (str == null
                                || str.length() == 0
                                || subStr == null
                                || subStr.length() == 0
                                || str.length() < subStr.length()) {
                        return 0;
                }
               
                String replacedStr = str.replace(subStr, "");
               
                return (str.length() - replacedStr.length()) / subStr.length();
        }
}
No3:
import java.util.Scanner;

/**
* 求一个偶数(大于6)表示为两个素数之和。
* @author wwwxinyu1990
*
*/
public class Test {
        public static void main(String[] args) {
                System.out.println("请输入一个大于6的偶数:");
                Scanner sc = new Scanner(System.in);
                int n = sc.nextInt();
               
                // 判断是否为大于6的偶数
                if (n < 6 || n % 2 != 0) {
                        System.out.println("输入不正确!");
                }
               
                for (int i = 2; i <= n; i++) {
                        if (isPrime(i) && isPrime(n - i)) {
                                System.out.println("结果是:" + n + "=" + i + "+" + (n - i));
                                break;
                        }
                }
               
                // 关闭输入流
                if (sc != null) {
                        sc.close();
                }
               
        }
       
        /**
       * 判断因数是否为素数
       * @param n
       * @return 是素数返回true,不是返回false
       */
        private static boolean isPrime(int n) {
                for (int i = 2; i < n; i++){
                        if (n % i == 0) {
                                return false;
                        }
                }
                return true;
        }
}
No4:
import java.util.Scanner;

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

                if(b*b - 4*a*c < 0){
                        System.out.println("对不起,次方程无解!");
                }else if(b*b - 4*a*c == 0){
                        System.out.println("此方程解x=" + -b/(2*a));
                }else{
                        System.out.println("此方程解x1=" + ((-b+ "/"+ 2*a
                                        + "+√(" + (b*b - 4*a*c)) +")/" +(2*a)) + " , x2="
                                        + ((-b+ "/"+ 2*a + "-√(" + (b*b - 4*a*c)) +")/" + (2*a)));
                }
               
                if (sc != null) {
                        sc.close();
                }
        }
}
No5:
import java.util.Scanner;

/**
* 打印出杨辉三角形。
* @author wwwxinyu1990
*
*/
public class Test {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入输出的行数:");
                int rowInt = sc.nextInt();
               
                int triangle[][]=new int;
               
                for(int i = 0;i < rowInt;i++){
                        for(int j = 0;j < rowInt * 2 -1;j++){
                                triangle = -1;
                        }
                }
               
                for(int i = 0;i < rowInt;i++){
                        triangle[(rowInt * 2 - 1) / 2 - i] = 1;
                        triangle[(rowInt * 2 - 1) / 2 - i] = 1;
                }

                for(int i = 2;i < rowInt;i++){
                        for(int j = 0;j < rowInt * 2 -1;j++){
                                if(j > rowInt - i - 1
                                                && j < rowInt * 2 - 1 - 1
                                                && triangle != -1
                                                && triangle != -1)
                                        triangle = triangle + triangle;
                        }
                }

                for(int i = 0;i < rowInt;i++){
                        for(int j = 0;j < rowInt * 2 - 1;j++){
                                if(triangle == -1){
                                        // 用printf方法以3个格输出字符串
                                        System.out.printf("%3s"," ");
                                } else{
                                        // 用printf方法以3个格输出数字
                                        System.out.printf("%3d",triangle);
                                }
                        }
                        System.out.println();
                }
               
                if (sc != null) {
                        sc.close();
                }
        }
}
No6:
import java.util.Scanner;

/**
* 请输入星期几的第一个字母来判断一下是星期几, 如果第一个字母一样, 则继续判断第二个字母
* @author wwwxinyu1990
*
*/
public class Test {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入星期的缩写(最少三位):");
                String week = sc.nextLine();
               
                if (week == null || week.length() == 0) {
                        System.out.println("请重新启动程序并按要求输入");
                }
                week = week.toUpperCase();
                char firstChar = week.charAt(0);
                char secondChar = week.charAt(1);
                switch(firstChar) {
                        case 'M':
                                System.out.println("星期一");
                                break;
                        case 'T':
                                switch (secondChar) {
                                        case 'U':
                                                System.out.println("星期二");
                                                break;
                                        case 'H':
                                                System.out.println("星期四");
                                                break;
                                }
                                break;
                        case 'W':
                                System.out.println("星期三");
                                break;
                        case 'F':
                                System.out.println("星期五");
                                break;
                        case 'S':
                                switch (secondChar) {
                                        case 'A':
                                                System.out.println("星期六");
                                                break;
                                        case 'U':
                                                System.out.println("星期日");
                                                break;
                                }
                        default:
                                System.out.println("输入不正确");
                                break;
                }
               
                if (sc != null) {
                        sc.close();
                }
        }
}
No7:
/**
* 打印出菱形
* @author wwwxinyu1990
*
*/
public class Test {
        public static void main(String[] args) {
                int n = 7;
                for (int i = 0; i < n; i++ ) {
                        if (i<=(n-1)/2) {
                                for (int j = i; j<(n-1)/2; j++) {
                                        System.out.print(" ");
                                }
                                for (int k = 0; k<2*i+1; k++) {
                                        System.out.print("*");
                                }
                        } else {
                                for (int j = 0; j<i-(n-1)/2; j++) {
                                        System.out.print(" ");
                                }
                               
                                for (int k = 0; k<2*(n-i)-1; k++) {
                                        System.out.print("*");
                                }
                        }
                        System.out.println();
                }
        }
}

No8:
/**
* 求10000以内的完数
*         一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。
* @author wwwxinyu1990
*
*/
public class Test {
        public static void main(String[] args) {
                for (int i = 1; i <= 10000; i++) {
                        // 定义因子之和变量
                        int temp = 0;
                        for (int n = 1; n < i / 2 + 1; n++) {
                                if (i % n == 0) {
                                        // 能被整除的除数则被加到temp中
                                        temp += n;
                                }
                        }
                        // 如果因子之和与原数相等的话,说明是完数
                        if (temp == i) {
                                // 输出完数
                                System.out.print(i + " ");
                        }
                }
        }
}
No9:
import java.util.Scanner;

/**
* 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
*   例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制
* @author wwwxinyu1990
*
*/
public class Test {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入因子a的值:");
                int a = sc.nextInt();
                System.out.println("请问求多少个数的和?");
                int n = sc.nextInt();
               
                // 结果
                int sum = 0;
                for(int i = 0 ; i < n ; i++){
                        sum+=a*fun(i);
                }
                System.out.println(sum);
               
                if (sc != null) {
                        sc.close();
                }
        }
       
        public static double fun(int m){
                if (m == 0)
                        return 1;
               
                return Math.pow(10, m) + fun(--m);
        }
}
No10:
/**
* 用程序说明Java 的==与 equals 的区别
*   区别是:
*                当比较的是基本数据类型,应该使用双等号,比较的是值。
*                当比较的复合数据类型(类):
*                        没有覆写equals方法的话,双等号和equals方法比较的都是在内存中的存放位置的地址值。
*                        在一些类库当中把equals方法覆盖掉了,如String,Integer,Date这些类,equals方法就
*                        不再是比较的是地址值
* @author wwwxinyu1990
*
*/
public class Test {
        public static void main(String[] args) {
                String str1 = "test";
                String str2 = "test";
                String str3 = new String("test");
               
                if (str1 == str2) {
                        System.out.println("str1 == str2");
                } else {
                        System.out.println("str1 != str2");
                }
               
                if (str1 == str3) {
                        System.out.println("str1 == str3");
                } else {
                        System.out.println("str1 != str3");
                }
               
                if (str1.equals(str3)) {
                        System.out.println("str1 equals str3");
                } else {
                        System.out.println("str1 not equals str3");
                }
        }
}


月之吟 发表于 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
这个有点乱……
import java.util.Scanner;

public class No22 {
        public static void main(String[] args) {
                int count = 0, len1, i, j;
                String s1, s2;
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入字符串:");
                s1 = sc.nextLine();
                System.out.println("请输入子串:");
                s2 = sc.nextLine();
                len1 = s1.length();
                for (i = 0; i < s1.length(); i++, len1--) {
                        if (len1 < s2.length()) {
                                break;
                        }
                        if (s1.charAt(i) == s2.charAt(0)) {
                                for (j = 1; j < s2.length(); j++) {
                                        if (s1.charAt(i + j) != s2.charAt(j)) {
                                                break;
                                        }
                                }
                                if (j == s2.length()) {
                                        count++;
                                }
                        }
                }
                System.out.println("子串数量为:" + count);
                sc.close();
        }
}
No23
import java.util.Scanner;

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

        static boolean prime(int i) {
                if (i == 1) {
                        return false;
                } else {
                        for (int j = 2; j <= Math.sqrt(i); j++) {
                                if (i % j == 0) {
                                        return false;
                                }
                        }
                        return true;
                }

        }
}
No24
import java.util.Scanner;

public class No24 {
        public static void main(String[] args) {
                int a, b, c;
                double p, q, deta;
                Scanner sc = new Scanner(System.in);
                System.out.println("请分别依次输入二次项系数、一次项系数和常数项,用空格隔开:");
                a = sc.nextInt();
                b = sc.nextInt();
                c = sc.nextInt();
                if (a == 0) {
                        System.out.println("输入的不是一元二次方程。");
                } else {
                        deta = b * b - 4 * a * c;
                        if (deta == 0) {
                                System.out.println("X1 = X2 = " + (-b / 2 / a));
                        } else if (deta > 0) {
                                p = -b / (2 * a);
                                q = Math.sqrt(deta) / (2 * a);
                                System.out.println("X1 = " + (p + q));
                                System.out.println("X1 = " + (p - q));
                        } else {
                                p = -b / (2 * a);
                                q = Math.sqrt(-deta) / (2 * a);
                                System.out.println("X1 = " + p + "i" + "+" + q);
                                System.out.println("X1 = " + p + "i" + "-" + q);
                        }
                }
                sc.close();
        }
}
No25
import java.util.Scanner;

public class No25 {
        public static void main(String[] args) {
                int n;
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入需要打印杨辉三角的行数:");
                n = sc.nextInt();
                int[][] yang = new int[];
                for (int i = 0; i < n; i++) {
                        yang = new int;
                        for (int j = 0; j <= i; j++) {
                                if (j == 0 || j == i) {
                                        yang = 1;
                                } else {
                                        yang = yang + yang;
                                }
                        }
                }
                for (int p = 0; p < n; p++) {
                        for (int q = 0; q < yang.length; q++) {
                                System.out.print(yang + " ");
                        }
                        System.out.println();
                }
                sc.close();
        }
}
No26
import java.util.Scanner;

public class No26 {
        public static void main(String[] args) {
                String s;
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入星期的第一个字母:");
                s = sc.nextLine();
                if (run(s.toLowerCase())) {
                        System.out.println("无法判断,请输入第二个字母:");
                        s += sc.nextLine();
                        next(s.toLowerCase());
                }
                sc.close();
        }

        static boolean run(String s) {
                switch (s) {
                case "m":
                        System.out.println("是星期一,Monday。");
                        return false;
                case "w":
                        System.out.println("是星期三,Wednesday。");
                        return false;
                case "f":
                        System.out.println("是星期五,Friday。");
                        return false;
                case "s":
                case "t":
                        return true;
                default:
                        System.out.println("输入有误");
                        return false;
                }
        }

        static void next(String s) {
                switch (s) {
                case "su":
                        System.out.println("是星期日,Sunday。");
                        break;
                case "sa":
                        System.out.println("是星期六,Saturday。");
                        break;
                case "th":
                        System.out.println("是星期四,Thursday。");
                        break;
                case "tu":
                        System.out.println("是星期三,Tuesday。");
                        break;
                default:
                        System.out.println("输入有误");
                        break;
                }
        }
}
No27
这个竟然搞得我有点晕……
public class No27 {
        public static void main(String[] args) {
                int num = 4;
                for (int i = 0; i < num; i++) {
                        for (int m = 0; m < num - i - 1; m++) {
                                System.out.print(" ");
                        }
                        for (int n = 0; n < i * 2 + 1; n++) {
                                System.out.print("*");
                        }
                        System.out.println();
                }
                for (int i = 0; i < num - 1; i++) {
                        for (int m = 0; m < i + 1; m++) {
                                System.out.print(" ");
                        }
                        for (int n = 0; n < (num - i - 1) * 2 - 1; n++) {
                                System.out.print("*");
                        }
                        System.out.println();
                }
        }
}
No28
public class No28 {
        public static void main(String[] args) {
                int sum;
                System.out.println("10000内的完数有:");
                for (int i = 3, j; i < 10000; i++) {
                        sum = 1;
                        for (j = 2; j < Math.sqrt(i); j++) {
                                if (i % j == 0) {
                                        sum += j + (i / j);
                                }
                        }
                        if (j == Math.sqrt(i)) {
                                sum += j;
                        }
                        if (sum == i) {
                                System.out.println(i);
                        }
                }
        }
}
No29
import java.util.Scanner;

public class No29 {
        public static void main(String[] args) {
                int a, n, sum = 0, temp = 0;
                Scanner sc = new Scanner(System.in);
                System.out.println("请以此输入a的值和相加的个数,用空格分开");
                a = sc.nextInt();
                n = sc.nextInt();
                for (int i = 0; i < n; i++) {
                        temp = temp * 10 + 1;
                        sum += temp;
                }
                sum *= a;
                System.out.println("最后结果为:" + sum);
                sc.close();
        }
}
No30
public class No30 {
        public static void main(String[] args) {
                String s1 = "123";
                String s2 = "123";
                String s3 = new String("123");
                String s4 = new String("123");
                System.out.println("s1==s2          " + (s1 == s2));
                System.out.println("s1==s3          " + (s1 == s3));
                System.out.println("s3==s4          " + (s3 == s4));
                System.out.println("s1.equals(s2)   " + (s1.equals(s2)));
                System.out.println("s1.equals(s3)   " + (s1.equals(s3)));
                System.out.println("s3.equals(s4)   " + (s3.equals(s4)));
        }
}
这次有几个写的有些乱- -,不会改了,就先这样吧……
另外,新年快乐~{:9_236:}

wwwxinyu1990 发表于 2015-2-20 10:10:19

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

奥奥,错了~这几天一直没时间,我回头再改下吧{:1_1:}
页: [1]
查看完整版本: #鱼C五周年嘉年华# 《JAVA程序设计&改错》# 第三章