java经典程序编程知识(一)

Wesley13
• 阅读 430
Scanner scanner=new Scanner(System.in)

Scanner是一个类,nextXxx()是Scanner的成员函数,System.in作为参数传递给Scanner的构造函数,使Scanner用键盘作为输入,然后用new在内存中实例化一个Scanner出来,使得其它变量能调用这块内存区。

next()与nextLine()读取字符串
next():

一定要读取到有效字符后才可以结束输入。
对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
next()不能得到带有空格的字符串。

nextLine():

以Enter为结束符,nextLine()方法返回的是输入回车之前的所有字符,可以获得空白。

while (scanner.hasNextDouble()) {//判断输入的是不是double,如果输了别的按下enter后会终止
    double x = scanner.nextDouble();//读取double型
}

【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。

    public static void main(String[] args) {
        int n=0;
        System.out.println("101-200间的素数有:");
        for(int i=101;i<=200;i++){
            if(isRight(i)){
                System.out.print(i+" ");
                n++;
                if(n%5==0){
                    System.out.println();
                }
            }            
        }
        System.out.println("共有"+n+"个素数");
    }
    private static boolean isRight(int n){
        for(int i=2;i<=Math.sqrt(n);i++){
            if(n%i==0){
                return false;
            }
        }
        return true;
    }
为什么用Math.sqrt(m):

因为如果m能被2m-1之间任一整数整除,其二个因子必定有一个小于或等于√m,另一个大于或等于√m。例如16能被2,4,8整除,16=2_8,2小于4,8大于4,16=4_4,4=√16,因此只需判定在24之间有无因子即可

long startTime=System.currentTimeMillis(); //获取开始时间(毫秒)
doSomeThing(); //测试的代码段
long endTime=System.currentTimeMillis(); //获取结束时间
long startTime=System.nanoTime(); //获取开始时间(纳秒)
水仙花数求法
    public static void main(String[] args) {
        int m,n,t;
        for(int i=100;i<1000;i++){
            m=i%10;
            n=i/10%10;
            t=i/100;
            if(i==(m*m*m)+(n*n*n)+(t*t*t)){
                System.out.print(i+" ");
            }
        }
    }

【程序4】
题目:将一个正整数分解质因数。例如:输入90,打印出90=2 * 3 * 3 * 5。

public class Programme {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个正整数:");
        int n=scanner.nextInt();
        System.out.print(n+"=");
        for(int i=2;i<=n;i++){
            while(n%i==0&&i!=n){//当要除以4时前面除以2的时侯已经除完,达到了选出质数的效果
                System.out.print(i+"*");
                n=n/i;
            }
            if(n==i){
                System.out.println(i);
            }
        }
        scanner.close();
    }    
}
两个数的最大公约数(Greatest Common Divisor)的求法
辗转相除法

辗转相除法也叫欧几里得算法,是一种非常古老的求解两个数的最大公约数的算法。其基于的原理:两个正整数a和b(a > b),它们的最大公约数gcd等于a除以b的余数r和b之间的最大公约数。比如,10和25的最大公约数5等于25除以10的余数5和10的最大公约数;再比如51和21的最大公约数3等于51除以21的余数9和21的最大公约数,而9和21的最大公约数为3。根据上面的原理,辗转相除法的算法流程可以如下:
步骤1:计算a与b的余数r。
步骤2:如果r为0,则返回gcd = b。否则,转到步骤3。
步骤3:使用b的值更新a的值,使用余数r更新b的值,转到步骤1。

long Gcd(long a,long b){
    return (a%b==0)?b:(Gcd(b,a%b));
}

等等,为什么不对a和b的大小进行判断呢?上面的算法原理中不是要求a大于b吗?如果调用时a值大于b值,比如a为51,b为21,那么情况跟上述算法原理是相符的。如果调用时a值小于b值,比如a为21,b为51,那么,21除以51的余数r为21,不为0,于是接着调用GetGCD(51, 21),看到了没?这就和a > b的情况是一样的了。也就是说我们根本无需判断a和b的大小,当a值小于b值时,算法的下一次递归调用就能够将a和b的值交换过来。

最小公倍数=A*B/gcb

假设两数为A,B,A=c_a,B=c_b;a,b互质(公约数只有1的两个整数),gcb=c,最小公倍数肯定是a_b_c=A*B/gcb。

凡是属于IO流的类如果不关闭会一直占用资源.要养成好习惯用完就关掉

boolean bool;//bool的值不是false

int[] arr=new int[n];//创建数组

参考资料:https://blog.csdn.net/yzh372685776/article/details/51965436
https://www.cnblogs.com/laizhenghong2012/p/8457784.html

来自为知笔记(Wiz)

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
Scanner NextChar in Java Example
Java中的Scanner类具有一些方法:next(),nextInt(),nextLong(),nextLine()等,但没有<ahref"https://www.javaspring.net/java/javanextchar"rel"dofollow"nextChar()</a。这是一个从java.util.Scanner
Wesley13 Wesley13
2年前
Java第一次作业
1.在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?不能只用文字描述,一定要写代码,通过具体实例加以说明。例.ScannerscnewScanner(System.in);intisc.nextInt();Scanner的头文件为im
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
2年前
5.48 正则表达式的概述和基本使用
import java.util.Scanner;public class RegexDemo {public static void main(String args) {// 创建键盘录入对象Scanner sc  new Scanner(System.in);Sys
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
小万哥 小万哥
2个月前
Java 日期和时间 API:实用技巧与示例 - 轻松处理日期和时间
Java用户输入(Scanner)简介Scanner类用于获取用户输入,它位于java.util包中。使用Scanner类要使用Scanner类,请执行以下步骤:1.导入java.util.Scanner包。2.创建一个Scanner对象,并将其初始化为S