Javase | Java题目、Java算法题(不断添加中…)

目录:

  • Java算法题
      • 1. 编写Java程序, 打印几个特定的ASCII码,包括数组0和9,大写字母A和Z ,小写字母a和z
      • 2.编写程序,对是哪个整型变量进行排序,按照从小到大的顺序排列
      • 3.用if语句的嵌套,根据学生成绩判断等级
      • 4.用switch语句,根据传入的月份的参数,显示该月有多少天。程序中假定2月份固定为28天,不考虑闰年问题
      • 5.编写程序,使用while循环计算1+2+3+...+100的值。
      • 6.编写程序,计算1+1/3+1/5+1/7+...+1/(2×n+1)的值。
      • 7.编写程序,将32-126之间的95个字符显示在屏幕上。
      • 8.用for循环编写九九乘法表
      • 9.打印3~100之间的素数,每行打印6个数
      • 10.获得任意一个时间的下一天
      • 11.将某个时间以固定的格式转换为字符串
      • 12.编写一个截取字符串的函数,输入一个字符串和字节数,输出按字节数截取的字符串
      • 13.判断回文数
      • 14.输入一个数.且判断是不是斐波那契数
      • 15.输入五个数,判断其最大值
      • 16.计算银行利息题目 ,本金10万元,求什么年一共超过15万元
      • 17.输入一个正整数,求各位数的数字之和
      • 18.求数列s=1+12+123+1234+... 123456789的前九项的和
      • 19.计算sum=1-1/2!+1/3!-... (-1)^(n-1)/n!
      • 20.输入一个数,判断其是不是素数
      • (不断添加中…)

Java算法题

1. 编写Java程序, 打印几个特定的ASCII码,包括数组0和9,大写字母A和Z ,小写字母a和z

/*
   编写Java程序, 打印几个特定的ASCII码,包括数组0和9,大写字母A和Z ,小写字母a和z
 */
public class PrintAscii {

    public void dispAscii(char ch) { //输入的字符
        int ascii =(int) ch; //将字符转换为“ASCII码”
        System.out.println(ch+"的Ascii码是: "+ascii);
    }

    public static void main(String[] args) {
        PrintAscii pa = new PrintAscii();
        pa.dispAscii('0'); //48
        pa.dispAscii('9'); //57
        pa.dispAscii('A'); //65
        pa.dispAscii('Z'); //90
        pa.dispAscii('a'); //97
        pa.dispAscii('z'); //122
    }
}

2.编写程序,对是哪个整型变量进行排序,按照从小到大的顺序排列

/*
  编写程序,对是哪个整型变量进行排序,按照从小到大的顺序排列
 */
public class SortABC {
    public static void main(String[] args) {
        int a = 100, b = 5, c = 307;
        int t;
        if(a>b){
            t=a;
            a=b;
            b=t;
        }
        if(a>c){
            t=a;
            a=c;
            c=t;
        }
        if(b>c){
            t=b;
            b=c;
            c=t;
        }
        System.out.println("排序之后: a="+a+", b="+b+", c="+c);
    }
}

3.用if语句的嵌套,根据学生成绩判断等级

/*
 用if语句的嵌套,根据学生成绩判断等级
 */
public class IfDemo {
    public static void main(String[] args) {
        int score = 95;
        String grade;
        if (score >= 90) {
            grade = "优";
        }else if(score >= 80){
            grade = "良";
        }else if(score >= 70){
            grade = "中";
        }else if(score >= 60){
            grade = "及格";
        }else {
            grade = "不及格";
        }
        System.out.println("学生的成绩为: "+score);
        System.out.println("学生的等级为: "+grade);
    }
}

4.用switch语句,根据传入的月份的参数,显示该月有多少天。程序中假定2月份固定为28天,不考虑闰年问题

/*
  用switch语句,根据传入的月份的参数,显示该月有多少天。程序中假定2月份固定为28天,不考虑闰年问题
 */
public class SwitchDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入月份: ");
        int month = scanner.nextInt();
        int days = 0;
        switch (month) {
            case 2 :  days = 30;  break;
            case 4 :  days = 30;  break;
            case 6 :  days = 30;  break;
            case 9 :  days = 30;  break;
            case 11 : days = 30;  break;
            default : days = 31;
        }
        System.out.println(month+"月有"+days+"天");
    }
}

5.编写程序,使用while循环计算1+2+3+…+100的值。

/*
   编写程序,使用while循环计算1+2+3+...+100的值
 */
public class Sum100 {
    public static void main(String[] args) {
      int i = 1;
      int sum = 0;
        while (i <= 100) {
            sum += i;
            i++;
        }
        System.out.println("1到100的累加和是: "+sum);
    }
}

6.编写程序,计算1+1/3+1/5+1/7+…+1/(2×n+1)的值。

/*
   编写程序,计算1+1/3+1/5+1/7+...+1/(2×n+1)的值。
   要求计算到1/(2×n+1)小于0.00001时为止。当循环结束时,显示上述表达式中的n值,以及计算结果
 */
public class DoWileDemo {
    public static void main(String[] args) {
        int n = 1;
        double sum = 1.0,temp;
        do {
          temp = 1.0/(2*n+1);
          sum += temp;
          n++;
        } while (temp >= 0.00001);
        System.out.println("循环结束时n的值为: "+(n-1));
        System.out.println("计算出来的结果是: "+sum);
    }
}

7.编写程序,将32-126之间的95个字符显示在屏幕上。

/*
  编写程序,将32-126之间的95个字符显示在屏幕上。
  为了美观,要求小于100的码值前填充一个0,每打印8个字符
 */
public class ShowAscii {
    public static void main(String[] args) {
       String temp = "";
        for (int i = 32; i <= 126; i++) {
            //如果码值小于100,则码值前会填充一个0
            temp = i < 100 ?("0"+i):(""+i);
            System.out.print(temp+"="+(char)i+"  ");
            if ((i - 31) % 8 == 0) {
                System.out.print("\n");
            }
        }
    }
}

8.用for循环编写九九乘法表

/*
  用for循环编写九九乘法表
 */
public class ChengFaBiao {
    public static void main(String[] args) {
        int i,j;
        for (i = 1; i <= 9; i++) {
            for (j = 1; j <= i; j++) {
                System.out.print(i+"*"+j+"="+i*j+"\t");
            }
            System.out.println("\n");
        }
    }
}

9.打印3~100之间的素数,每行打印6个数

/*
  打印3~100之间的素数,每行打印6个数
 */
public class SuSu {
    //素数 : 素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
    public static void main(String[] args) {
        System.out.println("3~100之间的素数有: ");
        boolean flag;
        int count = 0; //统计素数的个数
        for (int i = 3; i <= 100; i++) {
            //先假定该数为素数
            flag = true;
            for (int j = 2; j <= i / 2; j++) {
                if (i % j == 0) {//能其其他数整除,其不是素数
                    flag = false;
                    break;
                }
            }
            if (flag) { //如果是素数,则输出该素数
                System.out.print(i+"\t");
                count++;
                if (count % 6 == 0) {
                    System.out.println();
                }
            }
        }
    }
}

10.获得任意一个时间的下一天

/*
  获得任意一个时间的下一天
 */
public class NextDay {
    public static void main(String[] args) {

        /*
          java.util.Date类的底层实现是通过一个long类型的整型数据来保存日期,
          这个值记录的是任何一个时间距1970年1月1日,0点0分0秒的毫秒数。
         */
        Date now = new Date();  //获得当前时间
        //打印下一天的时间
        System.out.println(getNextDate(now)+"==========");
    }

    //获得下一天的时间
    private static Date getNextDate(Date d) {
        /*
          增加的时间为一天。
          一天有24小时,一小时有60分钟,一分钟有60秒,1秒为1000毫秒
         */
        long addTime = 1 * 24 * 60 * 60 * 1000; //表示一天时间的毫秒数
        System.out.println(addTime+" ----  ");
        //用毫秒数构造新的日期
        Date date = new Date(d.getTime() + addTime);
        return date;
    }
}

11.将某个时间以固定的格式转换为字符串

/*
  将某个时间以固定的格式转换为字符串
 */
public class DateFormat {
    public static void main(String[] args) {
        //现在的时间
        Date now = new Date();
        //打印现在时间的字符串格式
        System.out.println(dateFormatStr(now));
    }

    //将Date类型格式的时间,转换为特定字符串格式的时间 的方法
    private static String dateFormatStr(Date now) {
        //定义字符串的格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String str = sdf.format(now);
        return str;
    }
}

12.编写一个截取字符串的函数,输入一个字符串和字节数,输出按字节数截取的字符串

  • 编写一个截取字符串的函数,输入一个字符串和字节数,输出按字节数截取的字符串。但要保证函数不被截半个,如"我ABC" 4,应该截取 “我AB”,输入“我ABC汉DEF” 6,应该输出 “ABC”,而不是"我ABC+汉的半个"。

  • 试题分析: 容易产生混淆的是中文字符和英文字符。要注意的是: 中文字符占两个字节,英文字符占一个字节。(此程序:如果一个汉字被截取了1个字节的话,是会被丢弃的)

  • /*
      编写一个截取字符串的函数,输入一个字符串和字节数,输出按字节数截取的字符串。
      但要保证函数不被截半个,如"我ABC" 4,应该截取 "我AB",输入“我ABC汉DEF” 6,应该输出 “ABC”,
      而不是"我ABC+汉的半个"。
    
      试题分析: 容易产生混淆的是中文字符和英文字符。要注意的是: 中文字符占两个字节,英文字符占一个字节。
      (此程序:如果一个汉字被截取了1个字节的话,是会被丢弃的)
     */
    public class InterceptionStr {  //此程序:如果一个汉字被截取了1个字节的话,是会被丢弃的。
    
        static String ss; //要进行截取操作的字符串
        static int n;     //截取的字符串的字节数
    
        public static void main(String[] args) {
            System.out.println("请输入字符串: ");
            Scanner sc1 = new Scanner(System.in);
            ss = sc1.next(); //将Scanner对象中的内容以字符串的形式取出来
            System.out.println("请输入字节数:");
            Scanner sc2 = new Scanner(System.in);
            n = sc2.nextInt(); //将Scanner对象中的内容以数值的形式取出来
            //调用截取字符串的方法
            interception(setValue()); //传给该方法的参数为: 一个字符串数组
        }
    
       /*
         将“字符串”转换为“字符串数组“
        */
        public static String[] setValue() {
            //创建一个字符串数组
            String[] string = new String[ss.length()];
    
            //将”字符串“中的每个"字符"取出且存入到"字符串数组string"中
            for (int i = 0; i < string.length; i++) {
                //只包括i,不包括i+1
       string[i] = ss.substring(i, i+1); //将字符串ss中的第i个"字符"取出,放入“字符串数组”中
            }
            return string; //将这个字符数组返回
        }
    
        /*
           截取字符串的方法
         */
        public static void interception(String [] string) {
            int count = 0;
            String pattern = "[\u4e00-\u9fa5]"; //汉字的正则表达式
            System.out.println("以每" + n + "字节划分的字符串如下所示: ");
            for (int i = 0; i < string.length; i++) {
                 //判断字符串数组中的每一个字符串是“汉字”还是“数字”
                //将字符数组中的每一个元素与正则表达式进行匹配,如果相同则返回true,同时计算该要被截取的字符串ss的字节数: count
                if (string[i].matches(pattern)) {
                    count = count + 2;  //如果当前字符是汉字,计时器count就+2
                } else {
                    count = count + 1;  //如果当前字符不是汉字,计时器count+1
                }
    
                if (count < n) { //如果当前计时器count的值小于n,则输出当前字符串
                    System.out.print(string[i]);
                } else if (count == n) { //如果当前计时器count的值等于n,则输出当前字符串
                    System.out.print(string[i]);
                    count = 0; //因为一次截取n个字节,现在已经够了,重新开始截取下一次的n个字节
                    System.out.println();
                } else {
               count = 0; //如果当前计时器count的大于n。则计算器count清零,接着执行外部循环
                    System.out.println();
                }
            }
        }
    }
    

13.判断回文数

  • 如何判断回文数
    有这样一类数,它们顺着看和倒着看是相同的数,该数即为"回文数"
    例如: 121、656、2322,这样的数字被称为回文数字。
  • 试题分析:可以通过该数字倒置的位置栏判断它是否是回文数字。
/*
  如何判断回文数。
  有这样一类数,它们顺着看和倒着看是相同的数,该数即为"回文数"
  例如: 121、656、2322,这样的数字被称为回文数字。

  试题分析:可以通过该数字倒置的位置栏判断它是否是回文数字。
 */
public class Palindrome {
    public static void main(String[] args) {
        int n;
        System.out.println("请输入一个整数: ");
        Scanner scInt = new Scanner(System.in);
        n = scInt.nextInt();
        if (isPalindrome(n)) {
            System.out.println(n + "是回文!");
        } else {
            System.out.println(n + "不是回文!");
        }
    }

    //判断是不是回文数
    private static boolean isPalindrome(int n) {
        //调用方法,将要判断的数进行倒置
        int m = reverse(n);
        if (m == n) { //如果不倒置数 = 倒置数,有其是回文数
            return true;
        } else {
            return false;
        }
    }

    //将传入的数进行倒置
    private static int reverse(int i) {
        int s, j = 0;
        s = i;
        while (s != 0) {
            // *10 的原因: 倒置的话每次位数要升一级,自然要*10
            j = (j * 10) + (s % 10);
            s = s / 10;
        }
        return j;
    }
}

14.输入一个数.且判断是不是斐波那契数

  Scanner in = new Scanner (System.in);
  System.out.println("请输入一个整数:");
  int shuzhi = in.nextInt();
  while (shuzhi>f1) {
      f3=f1+f2;
      f1=f2;
      f2=f3;     //出现所有的Fibonacci数,且让f2也当过所有的...数
}
  if (shuzhi==f2) {
    System.out.println(shuzhi+"是Fibonacci数");
  }else
    System.out.println(shuzhi+"不是Fibonacci数");

15.输入五个数,判断其最大值

/*
 * 思想:设置max 和先输入一个数,并设其为最大值,然在循环语句中输入剩余的四个数,符合条件则让它是最大值,不是则继续循环,输入数字。
 */
import java.util.Scanner;
public class shijie {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int soum1,max,x,weishu=1;
		System.out.println("请输入一个数");	
		soum1 = in.nextInt();
		max = soum1;
		while(weishu<=4){
			System.out.println("请输入一个数");	
			x = in.nextInt();	
			if(x>max){
				max = x;			 
			}
			weishu++;
		}
		System.out.println("最大值为:" +max);	
	}
}

16.计算银行利息题目 ,本金10万元,求什么年一共超过15万元

 int year =2018; float money = 10l;
        while (money <=15) {
            money *= 1.04f;
            year++;
        }
        System.out.println("超过的时间是:" +year );

17.输入一个正整数,求各位数的数字之和

//题目:题目四:输入一个正整数,各位数的数字之和。
/*
 * 原理:先用求余(%),求出最后一位数的数,--相加
 * -----有此效果的原因:%后会有一个余数(如789/10=78...9(余9),那用上%号就收集此余数
 * 然后用除法 (/),删除刚刚已经用过的最后一位数,-----
 * -----有此效果的原因:/ 后由于整数求除的性质,+任何数10 = 就是有一个整数带加一个余数,(如789/10=78...9(余9),结合整除小数点后没有内容,就去掉了最后一位数)
 *
 */
//声明的变量有:weishu,sum;
import java.util.Scanner;
public class One {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int weishu ,sum=0,a;
        System.out.println("请输入一个数");
        weishu  = in.nextInt();
        while  (weishu !=0){    //输入的数不等于0,才能继续操作
            //收集位数的最后一项,且相加
            a = weishu%10;
            sum = sum +a;
            //除去刚已用过的位数,形成一个新的数
            weishu = weishu/10;
        }
        System.out.println("各位数之和为" +sum);
    }
}

18.求数列s=1+12+123+1234+… 123456789的前九项的和

/*
求数列s=1+12+123+1234+... 123456789的前九项的和
 */
public class One {
    public static void main(String[] args) {
        int sum =0 ,i= 1,a= 0 ;
        int weishu = 9;
        while (i<=weishu) {
            a= a*10+i;
            sum +=a;
            i++;
        }
        System.out.println(sum);
    }
}

19.计算sum=1-1/2!+1/3!-… (-1)^(n-1)/n!

 /*
 计算sum=1-1/2!+1/3!-... (-1)^(n-1)/n!
  */
import java.util.Scanner;
public class Demo {
    public static void main(String[] args) {
        Scanner in = new Scanner (System.in);
        double z =0,x=1; int y=1,n;
        System.out.println("请输入一个数" );
        n = in.nextInt();
        while (y<=n) {
            z = z+x;
            y= y+1;
            x= x*(1.0/y);
        }
        System.out.println("sum:" +z );
    }
}

20.输入一个数,判断其是不是素数

public class Demo {
    public static void main(String[] args) {
        Scanner in = new Scanner (System.in);
        System.out.println("请输入一个数");
        int soum1 = in.nextInt();

        boolean soum2 = false;

        for (int i =2;i<soum1;i++) {
            if (soum1%i == 0) {
                soum2 = true;
            }
        }
        if (soum2) {
            System.out.println("此数不是素数");
        }
        else {System.out.println("此数是素数");
        }
    }
}

(不断添加中…)

你可能感兴趣的:(Java知识点-整合,算法,Java,Javase,Java基础题目,Java题目)