package com.Xinzhi;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.*;
public class Lian {
//1.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要查询的月份");
int n =sc.nextInt();
System.out.println("第" + n + "月份有" + rabbit(n) + "对兔子");
}
static int rabbit(int n){
if (n==1 || n==2){
return 1;
}else {
return rabbit((n-1)) + rabbit(n-2);
}
}
}
class Lian2{
public static void main(String[] args) {
for (int i = 101; i<=200; i++){
int m =0;
for (int j=2; j < i; i++){
if (i%j == 0){
m++;
}
if (m==0){
System.out.println(i);
}
}
}
}
}
class Lian3{
public static void main(String[] args) {
for (int i =100; i <1000; i++){
int a = i/100;
int b = i/10%10;
int c = i%10;
if (i == Math.pow(a ,3) +Math.pow(b,3)+Math.pow(c,3)){
System.out.println(i);
}
}
}
}
class Lian4{
/*程序分析:
找一个数的因数也可以用for循环,从2遍历到他自身(保证找全)
如何找因数,是用该数90除以遍历的数2~90来算的,
如何找质因数。
如果90除以2得45
45再除以2,除不尽,除3(2+1)得15
再将15除以2,除不尽,除3(2+1)得5
5再继续除2,除3,除4…
这就是找质因数的方法,上面那个5其实就不用除了,只是举例。
可以看出上是一个循环,90除2得45后,是用45 继续往下走的。*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个正整数");
int n = sc.nextInt();
System.out.println(n+"=");
for (int i = 2; i<n; i++){
while (n%i == 0 && n!=i){
n=n/i;
System.out.println(i+"=");
}
if (n==1){
System.out.println(i);
break;
}
}
}
}
class Lian5{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩");
int n =sc.nextInt();
if (n>=0 && n<=100){
if (n>=90){
System.out.println("A");
} else if (n>=60) {
System.out.println("B");
}else {
System.out.println("C");
}
}else {
System.out.println("输入有误");
}
}
}
class Lian6{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数");
int m =sc.nextInt();
System.out.println("请输入第二个整数");
int n = sc.nextInt();
System.out.println(m+"和" + n + "的最大公约数为:"+ Max(m,n));
System.out.println(m+"和" +n + "最小公倍数为:" +Min(m , n));
}
static int Max(int m , int n){
while (m%n != 0){
int temp = m%n;
m=n;
n = temp;
if (m%n == 0){
return n;
}
}
return 0;
}
static int Min(int m , int n){
return m%n/Max(m , n);
}
}
class Lian8{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串");
String str = sc.nextLine();
//将获取的字符串赋值给arr
char[] arr = str.toCharArray();
int x = 0 , y = 0 , z = 0 , m = 0;
for (int i = 0; i<arr.length; i++){
int n = arr[i];
if ((n>=65 && n<90) || (n>=97 && n<=122)){
x++;
} else if (n==32) {
m++;
} else if (n>=48 && n<=57) {
y++;
}else {
z++;
}
}
System.out.println("输入的字母个数"+x);
System.out.println("输入的数字个数" + y);
System.out.println("输入的空格个数" + m);
System.out.println("输入的其他字符个数" + z);
}
}
class Lian9{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入n的值");
int n = sc.nextInt();
if (n>0 && n<10){
int s = 7*n+4*n+100*n+10000*n+51515*n;
System.out.println("s的值为"+s);
}else {
System.out.println("数入错误");
}
}
}
class Lian10{
public static void main(String[] args) {
for (int i =1; i<=1000; i++){
int sum = 0;
for (int j=1; j<i;j++){
if (i%j==0){
sum+=j;
}
}
if (sum==i){
System.out.println(i);
}
}
}
}
class Lian11{
public static void main(String[] args) {
//初始化参数
double s =0 , t = 0;
int sum = 0;
//遍历1到10
for (int i=1; i<=10;i++){
//s单次下落经过多少米 s=100/2的(i-1)的次方
s = 100/Math.pow(2,i-1);
System.out.println("第"+i+"次下落经过"+s+"米");
//t反弹多少米 t=100/2^i(2的i次方)
t=100/Math.pow(2,i);
System.out.println("第"+i+"反弹"+t+"米");
sum+=s;
}
System.out.println("第十次落地时共经过"+sum+"米");
}
}
class Lian12{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int [] arr = new int[4];
for (int i = 0; i<arr.length;i++){
arr[i] = sc.nextInt();
}
System.out.println("当前数组为:");
printArray(arr);
bubbleSort(arr);
System.out.println("排序后的数组为:");
printArray(arr);
}
public static void printArray(int [] arr){//形参
for (int i=0;i<arr.length;i++){
System.out.println(arr[i]+"");
}
System.out.println();
}
public static void bubbleSort(int [] arr){
//第一次排序将最后一个数定为最小,第二次将倒数第二个数为第二小.....
for (int i=0; i< arr.length-1;i++){
//"-1"同上,最后一个数无需交换
//“-i”第i+1(i初始为0,所以+1)轮排序后就少了一个数,第2轮就少两个
for (int j =0;j< arr.length-i-1;i++){
if (arr[j]<arr[j+1]){
int x = arr[j];
arr[j] = arr[j+1];
arr[j+1] = x;
}
}
System.out.println("第"+(i+1)+"轮排序后");
printArray(arr);
}
}
}
class Lian13 {
public static void main(String[] args) {
// 一、编写程序解决“百钱买百鸡”问题。公鸡五钱一只,母鸡三钱一只,小鸡一钱三只,
//现有百钱欲买百鸡,共有多少种买法?
way1();
wat2();
}
static void way1() {
for (int cock = 0; cock <= 20; cock++) {
for (int hen = 0; hen <= 33; hen++) {
if (cock * 5 + hen * 3 + (100 - cock - hen) / 3 == 100 && (100 - cock - hen) % 3 == 0) {
System.out.println("公鸡" + cock + "只,公鸡" + hen + "只,小鸡");
}
}
}
}
static void wat2() {
for (int y = 0; y < 20; y++) {
for (int x = 0; x < 33; x++) {
for (int z = 0; z < 300; z++) {
if (y * 5 + x * 3 + z / 3 == 100 && y + x + z == 100 && z % 3 == 0) {
System.out.println("公鸡" + y + "只,母鸡" + x + "只,小鸡" + z + "只");
}
}
}
}
}
}
class Lian14{
//二、猴子吃桃问题。猴子第一天摘下若干个桃子,当时就吃了一半,还不过瘾,就又吃了一个。
// 第二天又将剩下的桃子吃掉一半,
// 又多吃了一个。以后每天都吃前一天剩下的一半零一个。
// 到第 10 天在想吃的时候就剩一个桃子了,求第一天共摘下来多少个桃子?
public static void main(String[] args) {
int total=1;
int day=10;
for (int i=10;i>0;i--){
System.out.println("第"+day+"天有"+total+"个桃子");
total=(total+1)*2;
day--;
}
}
}
class Lian15{
//古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,
// 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
public static void main(String[] args) {
/*
* 古典问题:有一对兔子,
* 从出生后第3 个月起每个月都生一对兔子,
* 小兔 子长到第三个月后每个月又生一对兔子,
* 假如兔子都不死,
* 问每个月的兔子总数 为多少? */
way1();
way2();
}
/* 方法理解:第一个月1对
第二个月1对
第三个月 2 对(1+1) //第三个月,第一对老兔子开始生了一对兔子了
第四个月 3 对(2+1) //第四个月,没有新兔子生育,还是老兔子生一对,所以+1
第五个月 5 对(3+2) //第五个月,第三个月的兔子开始生育了,再加上老兔子也再生,所以是+2
第六个月 8 对(5+3) //第六个月,第四个月的兔子开始生育了,再加上之前的两对老兔子生,所以是+3
相信到这里,大家就可以看出来了,实际上不用管什么时候兔子开始生啊,每个月有几对兔子生,
这就是一道找规律的数学题而已,不要把自己搞懵了。
这个月的兔子数 = 上个月的兔子数 + 上上个月的兔子数*/
static void way1(){
int i=1,j=0;
for (int month=1;month<=12;month++){
int x = 1;
System.out.println("第"+month+"个月有"+2*i+"只兔子");
i=i+j;
j=x;
}
System.out.println();
}
static void way2(){
Scanner sc =new Scanner(System.in);
System.out.println("请输入月份");
int n= sc.nextInt();
System.out.println("第"+n+"月兔子数为:"+2*fun(n));
}
static int fun(int n){
if (n==1 || n==2){
return 1;
}else {
return fun(n-1)+fun(n-2);
}
}
}
class Lian16{
//用if while do.while for 计算1~200直接3的倍数的和
public static void main(String[] args) {
int sum=0;
ifo(sum);
dow(sum);
Cir(sum);
whi(sum);
}
static void ifo(int sum){
int i = 1;
if (i <= 200 ){
if (i % 3 == 0){
sum+=i;
}
i++;
}
System.out.println("用if循环计算1~200所有3的倍数和为"+sum);
}
static void dow(int sum){
int i = 1;
do {
if (i % 3 ==0){
sum+=i;
}
i++;
}while (i<=200);
System.out.println("用do...while循环计算1~200之间所有3的备注之和是"+sum);
}
static void Cir(int sum){
for (int i = 1;i<=200;i++){
if (i%3 == 0){
sum+=i;
}
}
System.out.println("用for循环计算1~200之间所有3的倍数之和为:"+sum);
}
static void whi(int sum){
int i = 1;
while (i <=200){
if (i%3 ==0){
sum+=i;
}
i++;
}
System.out.println("用while循环计算1~200之间所有3的倍数之和为:"+sum);
}
}
class Lian17 {
public static void main(String[] args) {
//输出200~500之间的素数
prem();
boo();
}
static void prem() {
for (int i = 200; i <= 500; i++) {
int m = 0;
for (int j = 2; j < i; j++) {
if (i % j == 0) ;
m++;
}
if (m == 0) ;
System.out.println(i);
}
}
static void boo() {
for (int i = 200; i <= 500; i++) {
boolean boo = true;
for (int j = 2; j < i; j++) {
if (i % j == 0) {
boo = false;
break;
}
}
if (boo) {
System.out.println(i);
}
}
}
}
class Lian18{
public static void main(String[] args) {
gene();
}
static void gene(){
for (int i = 1; i<=10000;i++){
int sum = 0;
for (int j = 1; j<i;j++){
if (i%j == 0){
sum+=j;
}
}
if (i==sum) {
System.out.println(i);
}
}
}
}
class Lian19{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n =9*sc.nextInt();
ju(n);
}
static void ju(int n ){
int a = n/1000;
int b = n/100%10;
int c = n/10%10;
int d = n%10;
int sum = a+b+c+d;
if (sum%9==0){
System.out.println(n+"的个位数之和能被9整除");
}else {
System.out.println(n+"的各个位数之和不能被9整除");
}
}
}
class Lian20{
public static void main(String[] args) {
for (int i = 100; i<1000000;i++){
prm(i);
}
}
static void prm(int i){
int a = i/100;
int b = i/10%10;
int c = i%10;
double sum = Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3);//计算次方
if (sum==i){
System.out.println(i);
}
}
}
class Lian21{
public static void main(String[] args) {
System.out.println("请输入一个整数");
Scanner sc =new Scanner(System.in);
int n = sc.nextInt();
int sum = n;
System.out.println(n+"的质因数又:");
for (int i=2;i<n;i++){
while (n%i==0){
n/=i;
System.out.println(i+"");
}
}
System.out.println(""+sum);
}
}
class Lian22{
public static void main(String[] args) {
Random rd = new Random();
int n = rd.nextInt(300);
System.out.println("原本的数为"+n);
while (n != 1){
if (n%2 == 0){
n=n/2;
}else {
n = 3*n+1;
}
System.out.println("改变之后为"+n);
}
System.out.println(n);
}
}
class Lian23{
public static void main(String[] args) {
System.out.println(23);
}
}
class Lian24{
public static void main(String[] args) {
Random random = new Random();//随机数
int [] arr = new int[10];//十个数的数组
for (int i = 0; i<10;i++){//数组中放入随机数
arr[i] = random.nextInt(100)+1;//要求1-100的随机数所以要+1
}
List list = new ArrayList();//创建一个集合
for (int i = 0; i<arr.length;i++){//循环数组,判断数组元素是否大于10
if (arr[i] >= 1){//如果大于10,放入集合中
list.add(arr[i]);
}
}
System.out.println(Arrays.toString(arr));
System.out.println(list);
}
}
class Lian28{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的大难");
String string = scanner.next();
System.out.println("请输入密码");
String in = scanner.next();
System.out.println(string.equals(in) ?"成功" :"失败");
}
}
enum Color
{
RED, GREEN, BLUE;
}
class Lian32 {
public static void main(String[] args) {
Color myVar = Color.RED;
switch(myVar) {
case RED:
System.out.println("红色");
break;
case GREEN:
System.out.println("绿色");
break;
case BLUE:
System.out.println("蓝色");
break;
}
}
}
class Enumeration03 {
public static void main(String[] args) {
System.out.println(Season.SPRING);
System.out.println(Season.SUMMER);
System.out.println(Season.AUTUMN);
System.out.println(Season.WINTER);
}
}
//演示enum关键字来实现枚举类
enum Season {//类
//如果使用 enum 来实现枚举类
//1. 使用 enum 来替代 class
//2. public static final Season SPRING = new Season("春天", "温暖"); 等价于
// SPRING("春天", "温暖") 解读:常量名(实参列表)
//3. 如果有多个常量(对象), 使用 "," 间隔
//4. 如果使用 enum 来实现枚举,要求将定义常量对象,写在最前面
SPRING("春天", "温暖"),
SUMMER("夏天", "炎热"),
AUTUMN("秋天", "凉爽"),
WINTER("冬天", "寒冷")
;
private String name;
private String desc;//描述
private Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
@Override
public String toString() {
return "Season{" +
"name='" + name + '\'' +
", desc='" + desc + '\'' +
'}';
}
}
class Lian31{
public static void main(String[] args) {
ArrayList<Integer> arrayList =new ArrayList<Integer>();
arrayList.add(10);
arrayList.add(20);
arrayList.add(30);
arrayList.addAll(arrayList);//添加集合中所有元素
System.out.println(arrayList);
arrayList.clone();//复制集合中的所有元素
System.out.println(arrayList);
System.out.println(arrayList.contains(8));//判断集合中有没有8
System.out.println(arrayList.indexOf(10));
}
}
class Lian33
{
// 泛型方法
public static < E > void printArray( E[] inputArray )
{
// 输出数组元素
for ( E element : inputArray ){
System.out.printf( "%s ", element );
}
System.out.println();
}
public static void main( String args[] )
{
// 创建不同类型数组: Integer, Double 和 Character
Integer[] intArray = { 1, 2, 3, 4, 5 };
Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };
System.out.println( "整型数组元素为:" );
printArray( intArray ); // 传递一个整型数组
System.out.println( "\n双精度型数组元素为:" );
printArray( doubleArray ); // 传递一个双精度型数组
System.out.println( "\n字符型数组元素为:" );
printArray( charArray ); // 传递一个字符型数组
}
}
enum Choose{
SPRING(1, "温暖"),
SUMMER(2, "炎热"),
AUTUMN(3, "凉爽"),;
private int xuhao;
private String wan;
Choose(int xuhao, String wan) {
this.xuhao = xuhao;
this.wan = wan;
}
public int getXuhao() {
return xuhao;
}
public String getWan() {
return wan;
}
public static void main(String[] args) {
System.out.println("输入序号");
Scanner in =new Scanner(System.in);
int i = in.nextInt();
switch (i){
case 1:
System.out.println(SPRING.xuhao + SPRING.wan);
}
}
}
关于java初学者的30个的综合练习 有的有注释大部分通俗易懂
于 2024-03-01 10:46:00 首次发布