猜數字小遊戲
隨機產生一個[1,100]範圍內的數據,採用鍵盤錄入的方式猜這個數字是多少。
如果鍵盤錄入的數字比隨機數大,輸出猜大了
如果鍵盤錄入的數字比隨機數小,輸出猜小了
如果鍵盤錄入的數字比隨機相同,輸出猜中了
如果猜大了或者猜小了可以重複猜,如果猜中了就遊戲結束。
//隨機產生一個[1,100]範圍內的數據
Random r=new Random();
int num=r.nextInt(100)+1;
//採用鍵盤錄入你猜的整數
Scanner sc=new Scanner(System.in);
while(true){
System.out.println("請輸入你猜的整數:");
int myNum=sc.nextInt();
//比較猜的數據是否正確
if(myNum>num){
System.out.println("猜大了");
}else if(myNUm<num){
System.out.println("猜小了");
}else{
System.out.println("恭喜你,猜中了^_^");
break;
}
}
生成驗證碼
寫一個方法,用來生成4個字符組成的驗證碼,驗證碼可以是字母和數字組成。
public class Test3 {
public static void main(String[] args) {
//一般驗證碼包含 大寫字母、小寫字母和0~9的數字。我隨機生成這些字符組成一個字符串就是驗證碼
//每一個字符都有一個編碼值對應,這個對應關係就是ASCII碼錶
/*
* 查詢ASCII編碼,常見字符和整數的對應關係如下
* 'a'~'z' 97~122 26個
* 'A'~'Z' 65~90 26個
* '0'~'9' 48~57 10個
*/
//定義一個char[]用來存儲所有的字符
char[] chs=new char[62];
int index=0;//索引從0開始
//把'a'~'z'的所有小寫字母,存儲到數組中
for(char i='a';i<='z';i++){
chs[index]=i;
index++;
}
//把'A'~'Z'的所有大寫字母,存儲到數組中
for(char i='A';i<='Z';i++){
chs[index]=i;
index++;
}
//把'0'~'9'的所有數字字符,存儲到數組中
for(char i='0';i<='9';i++){
chs[index]=i;
index++;
}
//再從chs數組中隨機產生4個字符,組成一個字符串,就是隨機的驗證碼
Random r=new Random();
String str=""; //一個空的字符串,用於驗證碼的拼接
for (int i = 0; i < 4; i++) {
//隨機產生一個索引
int j=r.nextInt(chs.length);
str+=chs[j];
}
//最終str就是驗證碼
System.out.println(str);
}
}
隨機點名器
鍵盤錄入5個學生的姓名,然後隨機產出一個學生的姓名。
//鍵盤錄入5個姓名,存儲到String數組中
String[] names=new String[5];
Scanner sc=new Scanner(System.in);
for(int i=0;i<5;i++){
System.out.println("鍵盤錄入一個姓名:");
String name=sc.next(); //鍵盤錄入字符串
//把錄入的姓名賦值給數組的元素
names[i]=name;
}
//隨機從數組中獲取一個元素,就是隨機產生的姓名
Random r=new Random();
int index=r.nextInt(names.length);
//通過索引獲取姓名
String name=names[index];
System.out.println("隨機產生的姓名是:"+name);
斐波那契數列
不死神兔問題,其實本質上就是一個數列問題叫做斐波那契數列。
數列如下:
1 1 2 3 5 8 13 21 ...
/*
找規律:
1.第一個數和第二個數都是1
2.從第三個數開始,這個數等於前面兩個整數之和
根據以上的規律,求第n個數是多少?
思路:
1.創建長度爲n的數組array
2.按照規律給數組中的元素賦值
//第一個數和第二個數都是1
array[0]=1;
array[1]=1;
//從第三個數開始這個數等於前面兩個整數之和
array[i]=array[i-1]+array[i-2]
*/
public class Test5 {
public static void main(String[] args) {
//創建長度爲n的數組array
int[] array=new int[20];
//第一個數和第二個數都是1
array[0]=1;
array[1]=1;
//從第三個數開始這個數等於前面兩個整數之和
for(int i=2;i<array.length;i++){
array[i]=array[i-1]+array[i-2];
}
//求數組的最後一個元素
System.out.println(array[array.length-1]);
}
}
評委打分案例
假設跳水運動中,鍵盤錄入6個評委分別給運動員打分,每一個評委給出的分數是0~10分,按照規則需要去掉最高分,去掉最低分,然後計算平均分纔是該運動員最終得分。
/*
思路:
1.鍵盤錄入6個整數[0,10],存儲到數組中
2.求數組中元素的最大值
3.求數組中元素的最小值
4.求數組中元素的和,減去最大值和最小值
5.求平均值
*/
public class Test6{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
//用來存鍵盤錄入的分數
int[] array=new int[6];
for(int i=0;i<6;i++){
//把鍵盤錄入的整數,直接賦值給數組的元素。
array[i]=sc.nextInt();
}
//求數組中元素的最大值
int max=array[0];
for(int i=1;i<array.length;i++){
if(array[i]>max){
max=array[i];
}
}
//求數組中元素的最小值
int min=array[0];
for(int i=1;i<array.length;i++){
if(array[i]<min){
min=array[i];
}
}
//求數組中元素的和
int sum=0;
for(int i=0;i<array.length;i++){
sum+=array[i];
}
//求去掉最大值和最小值後的平均值
double avg=(sum-max-min)*1.0/(array.length-2)
System.out.println("最終得分:"+avg);
}
}
停車收費系統
停車場要做一個停車收費系統,收費標準是5元/小時,不足一小時按一小時算。鍵盤錄入停車的分鐘數,輸出對應的金額。
//鍵盤錄入停車的分鐘數
Scanner sc=new Scanner(System.in);
System.out.println("請輸入停車的分鐘數:");
int min=sc.nextInt();
//把分鐘轉換爲小時
int h;
if(min%60==0){ //整小時
h=min/60;
}else{ //不是整小時
h=min/60+1;
}
//計算金額
int money=h*5;
System.out.println("停車"+h+"小時,收費:"+money+"元");
雙色球彩票
雙色球彩票中,有33個紅球,16個籃球,隨機從33個紅球中選出6個數字,從16個籃球中選出1個 數字,組成一注彩票。
/*
分析:
1)一注雙色球有7個數字組成,可以使用一個數組來存儲
2)其中前6個數字是從33個紅球中來[1,33],後面1個數字是從16個藍球中來[1,16]
從[1,33]的範圍內隨機生成6個整數,存儲到數組中
從[1,16]的範圍內隨機生成1個整數,存儲到數組中
3)最終把數組的元素組成一個字符串
*/
public class Demo2 {
public static void main(String[] args) {
//1)一注雙色球有7個數字組成,可以使用一個數組來存儲
int[] array=new int[7];
Random r=new Random();
//從[1,33]的範圍內隨機生成6個整數,存儲到數組中
int i=0;
while (true){
int num=r.nextInt(33)+1; //[0,32)+1 => [1,33]
//查找num在數組中是否存在,如果得到索引說明存在,如果返回-1說明不存在。
int index = getIndex(array, num);
if(index==-1){
array[i]=num;
i++;
if(i==6){
break;
}
}
}
//從[1,16]的範圍內隨機生成1個整數,存儲到數組中
array[6]=r.nextInt(16)+1;
//3)最終把數組的元素組成一個字符串
String s1="紅球:";
for (int j = 0; j < array.length; j++) {
if(j<array.length-1){
s1+=+array[j]+" ";
}else {
s1+="藍球:"+array[j]+" ";
}
}
System.out.println(s1);
}
//查找一個數組中元素的索引,如果沒有找到返回-1
public static int getIndex(int[] array,int key){
for (int i = 0; i < array.length; i++) {
if(array[i]==key){
return i; //如果找到了,返回索引
}
}
return -1; //如果返回-1,人爲規定是找不到的意思。
}
}