(判断素数)及方法的定义及应用

//判断是否为质数:
/*  并非一次判断得到的结果---用开关()
 *    1.boolean flag = true;假设是质数
 *    2.flag = false;       改为不是质数
 *    3.if  else            判断得结论
 *    判断数最多到这这个数的平方根就行了。省时
 *    比如求100旳质数,求它的平方根,只判断2~10就已经够了,根据经验得知。

 * */

import java.util.Scanner;
public class Foundation {
	public static void main(String[] args) {
		int count=0;
		for(int num=2;num<=100;num++){
			boolean flag =true;
			for(int i=2;i<=Math.sqrt(num);i++){
				if(num%i==0){
					flag=false;
					break;
				}
			}
			if(flag){
				count++;//质数个数增1,计数器
				System.out.print(num+"\t");
				if(count%10==0){
					System.out.println();
				}
			}
		}
		
	}

}



/*方法:
 * 1.方法:函数/过程
 *   1.1)用于封装一段特定的逻辑功能
 *   1.2)方法尽可能的独立(一个方法只干一件事)
 *   1.3)方法可以被反复的调用多次
 *   1.4)避免代码的重复,便于代码的维护,有利于
 *        团队开发。
 * 2.方法的定义:
 *     修饰词、返回值类型、方法名、参数列表、方法体
 *     方法执行完之后,需要用到方法中的某个数--需要用返回值  
 * 3.方法的调用:
 *    3.1)无返回值方法(有参传参);
 *    3.2)有返回值的方法:
 *        数据类型 变量 = 方法名(有参传参)
 * 4.return:
 *    4.1)return 值 ://4.11结束方法的执行  4.12)返回一个值
 *    4.2)return;   结束方法的执行(只能用在void的类型里)
 * 5.猜字符小游戏:
 *   分析:
 *     5.1)数据结构:
 *        5.1.1)char[] chs;//随机生成的字符数组
 *        5.1.2)char[] input;//用户输入的字符数组
 *        5.1.3)int letterRight;//字符对的个数
 *               int positionRight;//位置对的个数
 *               
 *               int[] result; //对比的结果
 *        5.1.4)int score;//得分
 *               int count;//猜错的次数
 *      5.2)设计程序结构:方法
 *         5.2.1)主方法:
 *               public staic void main(String[] args){
 *               
 *               } 
 *         5.2.2) 随机生成字符数组:
 *               public staic char[] generage(?){
 *               char[] chs = new chs[5];
 *                  //给chs中的每一个元素随机赋值
 *                 return chs;
 *               } 
 *         5.2.3)对比:随机字符数组与用户输入的字符数组
 *                public static int[] (char[] chs,char[] input){
 *                 int[] result = new int[2];
 *                  //
 *                  return result;
 *                } 
 * 5.3)设计算法:方法的实现
 *     对基本类型判断相等,用==
 *    

 * */

猜字符游戏:

//猜字符游戏
import java.util.Scanner;
public class Guessing {

	public static void main(String[] args) {
	    Scanner scan = new Scanner(System.in);
		char[] chs = generate();
		System.out.println(chs);
		int count=0;
		while(true){//自造死循环
			System.out.println("猜吧!");
			String str = scan.next().toUpperCase();//获取用户输入的字符串,并转换成大写字母
			if(str.equals("EXIT")){
				System.out.println("下次再来吧!");
				break;
				
			}
			char[] input = str.toCharArray();//将字符串转换成字符数组
			int[] result = check(chs,input);//对比随机字符数组与用户输入的字符比
			if(result[0]==chs.length){//猜对了
				int score = 100*chs.length-10*count;//一个字符100分,猜错1次减10分
				System.out.println("恭喜你,猜对了,得分为:"+score);
				break;
			}else{//猜错了
				count++;//猜错次数增1
				System.out.println("字符对个数:"+result[1]+",位置对个数:"+result[0]);
			}
	
		}
	}
	
	//随机生成字符数组
	public static char[] generate(){
		char[] chs = new char[5];//随机字符数组、
		char[] letters ={'A','B','C','C','D','E','F','G','H','I',
				'J','K','L','M','N','O','P','Q','R','S','T','U',
				'V','W','X','Y','Z'};//字符可选范围数组
        boolean[] flags = new boolean[letters.length];//开关数组,默认值为false,表示未存过
		for(int i=0;i<chs.length;i++){
        	int index;//随机下标
			do{ 
        		 index=(int)(Math.random()*25);//生成随机下标(0到25)
        	}while(flags[index]==true);//若下标对应的开关为true时,表示已存过,则重新生成index
			                           //当下标对应的开关为false时,则循环结束,表示未存过
			chs[i]=letters[index];     //基于index下标去letters中获取数据 ,并赋值给chs中的每一个元素
        	 flags[index]=true;        //修改Index下标对应的开关为true,表示已存过
         }
		return chs;
	}
    
	//对比:随机字符数组与用户输入的字符数组
	public static int[] check(char[] chs,char[] input){
		int[] result = new int[2];//对比结果
		//result[1]为字符对  result[0]为位置对
		//位置对在字符对的基础之上
		for(int i=0;i<chs.length;i++){
			for(int j=0;j<input.length;j++){
				if(chs[i]==input[j]){//字符对
					result[1]++;//字符对个数增1
					if(i==j){//位置对
						result[0]++;
					}
					break;//退出一次循环
				}
			}
		}
		return result;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值