Com.Java.Basis第五课《针对流程控制的语句练习题》(二)

简介: Com.Java.Basis第五课《针对流程控制的语句练习题》(二)

问题十一:猴子分香蕉2018

package WEB331;
/**
 * 5只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。
第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉。
第2只猴子醒来,重新把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来继续睡觉。
第3只猴子醒来,重新把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起来继续睡觉。
第4只猴子醒来,重新把香蕉均分成5堆,还剩下4个,就吃掉并把自己的一份藏起来继续睡觉。
第5只猴子醒来,重新把香蕉均分成5堆,哈哈,正好不剩!请计算一开始最少有多少个香蕉。
 * @author MZFAITHDREAM
 *
 */
public class 猴子分香蕉2018 {
  public static void main(String[] args) {
    for (int i = 0; i <10000; i++) {
      int tep=i;
      if(tep%5==1) {
        tep=tep-tep/5-1;
        if(tep%5==2) {
          tep=tep-tep/5-2;
          if(tep%5==3) {
            tep=tep-tep/5-3;
            if(tep%5==4) {
              tep=tep-tep/5-4;
              if(tep%5==0&&tep>0) {
                System.out.println(i);
              }
              }
            }
          }
        }
      }
    }
  }

问题十二:回文数

package WEB331;
/**
 * 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
输出格式
  按从小到大的顺序输出满足条件的四位十进制数。
 * @author MZFAITHDREAM
 *
 */
public class 回文数 {
  public static void main(String[] args) {
    for (int i = 100; i < 1000; i++) {
      int sa=i;
      int a=sa/1000;
      sa%=1000;
      int b=sa/100;
      sa%=100;
      int c=sa%10;
      sa%=10;
      int d=sa;
      if(a==d&&b==c) {
        System.out.println(i);
      }
    }
  }
}

问题十三:杨辉三角形

package WEB331;
import java.util.Scanner;
public class 杨辉三角形 {
  public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int length=sc.nextInt();
    int arr[][]=new int[length][length];
    for (int x = 0; x < length; x++) {
      for (int y = 0; y <=x; y++) {
        if(y==0||y==x) {
          arr[x][y]=1;
        }else {
//          在这里
          arr[x][y]=arr[x-1][y]+arr[x-1][y-1];
        }
        System.out.print(arr[x][y]+" ");
      }
      System.out.println();
    }
  }
}

问题十四:猴子吃桃问题

package WEB315307;
public class 猴子吃桃问题 {
  private static int countNum(){
    int day=1;
    for(int i=10;i>1;i--){
      day=(day+1)*2;
      System.out.println(day);
    }
    return day;
  }
  public static void main(String[] args) {
    // TODO Auto-generated method stub
      countNum();
      System.out.println();
  }
}

问题十五:能组成多少个互不相同且一个数字中无重复数字的三位数

package WEB315307;
/*
 * 有1、2、3、4  5个数字,
 * 能组成多少个互不相同且一个数字中无重复数字的三位数 我要求第一位数等于三位数?
 * 并把他们都输入。 从left到right 读出来的数字一样
 * 
 */
public class 能组成多少个互不相同且一个数字中无重复数字的三位 {
  public static void main(String[] args) {
    int count=0;
    //0 1 2 3 4  五个数
    for (int i = 1; i < 5; i++) {
      // 0 1 2 3 4 
      for (int j = 1; j <5; j++) {
        //0 1 2 3 4 
        for (int k = 1; k <5; k++) {
          if(i==k &&i!=j && j!=k ) {
            count++;
            System.out.println(i*100+j*10+k);
          }
      }
    }
  }
  }
}

问题十六: 判断是否为素数

package WEB315307;
import java.util.Scanner;
public class 判断是否为素数 {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("输入数值");
    try (Scanner scan = new Scanner(System.in)) {
      int n=scan.nextInt();
      isprime(n);
    }
  }
   static void isprime(int n) {
    // TODO Auto-generated method stub
    int m=0;
    for (int i = 2; i < n; i++) {
      if(n%i==0)
        m++;
    }
    if(m==0) {
      System.out.println("为素数");
    }else {
      System.out.println("不是素数");
    }
  }
}

问题十七: 奇数偶数互换

package WEB315307;
import java.util.Scanner;
/**
 * 
 * @author MZFAITHDREAM
 *
 */
public class 奇数偶数互换 {
//把奇数偶数互换
  //所有的基数位向left 所有的偶数位向right
  public static void main(String[] args) {
    // 创建Scanner
    System.out.println("输入数值");
    Scanner scan=new Scanner(System.in);
    int n=scan.nextInt();
        int even=n&0xaaaaaaaa;
        int odd=n&0x55555555; 
        int result= (even>>1)^(odd<<1);
        System.out.println(result);
      }
}

问题十八:球的高度

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,

* 求它在第10次落地时,共经过多少米?第10次反弹多高?

package WEB315307;
/**
 * 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,
 * 求它在第10次落地时,共经过多少米?第10次反弹多高?
 * @author MZFAITHDREAM
 *
 */
public class 球的高度 {
private static void fall(int num) {
  int sum=0;
  int hight=100;
  for (int i = 0; i <=num; i++) {
    sum=sum+hight;
    hight=hight/2;
  }
  System.out.println("L"+num+sum);
  System.out.println("H"+num+hight);
}
  public static void main(String[] args) {
    // TODO Auto-generated method stub
      fall(10);
  }
}

问题十九: 三个数比大小

输入三个整数x,y,z,请把这三个数由小到大输出。

package WEB315307;
public class 三个数比大小 {
//输入三个整数x,y,z,请把这三个数由小到大输出。
  private static void sort(int x,int y,int z){
    /**
     *  temp=x;
      x=y;
      y=temp;
     */
    int temp=0;
    if(x>y){
      temp=x;
      x=y;
      y=temp;
    }
    if(y>z){
      temp=y;
      y=z;
      z=temp;
    }
    if(x>y){
      temp=x;
      x=y;
      y=temp;
    }
    System.out.println("排列后的三个数是:"+x+","+y+","+z);
  }
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    sort(67, 678, 123);
  }
}

问题二十:统计字符串空格数字

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

package WEB315307;
/**
 * 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
 * @author MZFAITHDREAM
 *
 */
public class 统计字符串空格数字 {
    private static void just(String String) {
    int number=0,letter=0,space=0,other=0;  
      String  s1="[a-zA-Z]";
      String s2="[0-9]";
      String s3="\\s";
        String [] strings=String.split("");
      for (String s : strings) {
        if(s.matches(s1)) {
          letter++;
        }else if (s.matches(s2)) {
          number++;
        } else if (s.matches(s3)) {
          space++;
        } else {
          other++;
        }
      } 
      System.out.println("字符串的个数"+letter);
      System.out.println("空格的个数"+space);
      System.out.println("数字的个数"+letter);
      System.out.println("其他个数"+number);
    }
  public static void main(String[] args) {
    // TODO Auto-generated method stub
      just("AWE 48 939392 3KDN,NFD KL ");
  }
}
相关文章
Com.Java.Basis第五课《针对流程控制的语句练习题》(一)
Com.Java.Basis第五课《针对流程控制的语句练习题》(一)
40 0
|
8天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。
|
17天前
|
安全 Java
java 中 i++ 到底是否线程安全?
本文通过实例探讨了 `i++` 在多线程环境下的线程安全性问题。首先,使用 100 个线程分别执行 10000 次 `i++` 操作,发现最终结果小于预期的 1000000,证明 `i++` 是线程不安全的。接着,介绍了两种解决方法:使用 `synchronized` 关键字加锁和使用 `AtomicInteger` 类。其中,`AtomicInteger` 通过 `CAS` 操作实现了高效的线程安全。最后,通过分析字节码和源码,解释了 `i++` 为何线程不安全以及 `AtomicInteger` 如何保证线程安全。
java 中 i++ 到底是否线程安全?
|
5天前
|
安全 Java 开发者
深入解读JAVA多线程:wait()、notify()、notifyAll()的奥秘
在Java多线程编程中,`wait()`、`notify()`和`notifyAll()`方法是实现线程间通信和同步的关键机制。这些方法定义在`java.lang.Object`类中,每个Java对象都可以作为线程间通信的媒介。本文将详细解析这三个方法的使用方法和最佳实践,帮助开发者更高效地进行多线程编程。 示例代码展示了如何在同步方法中使用这些方法,确保线程安全和高效的通信。
25 9
|
8天前
|
存储 安全 Java
Java多线程编程的艺术:从基础到实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及其实现方式,旨在帮助开发者理解并掌握多线程编程的基本技能。文章首先概述了多线程的重要性和常见挑战,随后详细介绍了Java中创建和管理线程的两种主要方式:继承Thread类与实现Runnable接口。通过实例代码,本文展示了如何正确启动、运行及同步线程,以及如何处理线程间的通信与协作问题。最后,文章总结了多线程编程的最佳实践,为读者在实际项目中应用多线程技术提供了宝贵的参考。 ####
|
5天前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
8天前
|
Java
JAVA多线程通信:为何wait()与notify()如此重要?
在Java多线程编程中,`wait()` 和 `notify()/notifyAll()` 方法是实现线程间通信的核心机制。它们通过基于锁的方式,使线程在条件不满足时进入休眠状态,并在条件满足时被唤醒,从而确保数据一致性和同步。相比其他通信方式,如忙等待,这些方法更高效灵活。 示例代码展示了如何在生产者-消费者模型中使用这些方法实现线程间的协调和同步。
22 3
|
6天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
7天前
|
Java
java小知识—进程和线程
进程 进程是程序的一次执行过程,是系统运行的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。简单来说,一个进程就是一个执行中的程序,它在计算机中一个指令接着一个指令地执行着,同时,每个进程还占有某些系统资源如CPU时间,内存空间,文件,文件,输入输出设备的使用权等等。换句话说,当程序在执行时,将会被操作系统载入内存中。 线程 线程,与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间做切换工作时,负担要比
18 1
|
8天前
|
Java UED
Java中的多线程编程基础与实践
【10月更文挑战第35天】在Java的世界中,多线程是提升应用性能和响应性的利器。本文将深入浅出地介绍如何在Java中创建和管理线程,以及如何利用同步机制确保数据一致性。我们将从简单的“Hello, World!”线程示例出发,逐步探索线程池的高效使用,并讨论常见的多线程问题。无论你是Java新手还是希望深化理解,这篇文章都将为你打开多线程的大门。