练习题1:(完数问题)

求100以内的所有完数。(完数:它所有因子之和等于其本身)

 

方法一:

 /*
解体思路:1.先找出每个数的所有因子
2.比较因子之和是否与其数本身相等
*/ public class wanshu {
public static void main(String[] args) {
int sum=0;
for(int i=1;i<=1000;i++) //外层for循环用于遍历1-1000的所有数
{
for(int j=1;j<i;j++) //内层for循环用于遍历查找每个数的所有因子
{ //注意:j 从1开始,因为分母不能为0!!!
if(i%j==0) //如果A可以将B整除,余数为0,则B 为A 的因子
{
sum+=j; //计算出所有因子之和
}
} // 比较因子之和是否与其本身相等
if(sum==i) //注意:“比较”要放到内层for循环外,以免出现还没有计算完所有因子,仅当前因子数
{ //之和就与其数本身相等,而误被当作完数!!!!
System.out.println(i+": ");
for(int j=1;j<i;j++) //打印完数的所有因子
{
if(i%j==0)
{
System.out.println(j+" ");
}
}
}
}
} }

方法二:

    

  1  /*
2 解题思路:先找出每个数的所有因子
3 然后将其所有因子存储在一个数组里
4 如果该数符合完数要求,则打印出数组里的数
5 如果该数不符合要求,则将数组清空,用于存放下一个数的所有因子
6 */
7 public class wanshu {
8 public static void main(String[] args) {
9 int[] arr=new int[1000];
10 int index=0;
11 int sum=0;
12 for(int i=1;i<1000;i++)
13 {
14 for(int j=1;j<i;j++)
15 {
16 if(i%j==0)
17 {
18
19 arr[index]=j;
20 sum+=arr[index];
21 index++;
22 }
23 }
24 if(sum==i)
25 {
26 System.out.print(i+":");
27 for(int j=0;j<index;j++)
28 {
29 System.out.print(arr[j] + " ");
30 }
31 System.out.println();
32 }
33
34 index=0;
35 sum=0;
36
37 }
38 }
39
40 }

 练习题二:

1. 统计字符串中,字母,数字及其他字符的数量。

      


/*
* 解题思路:先输入一串字符串
* 挨个遍历,判段类型
* 定义三个变量来存储各个类型的数量
*
*
* */ import java.util.*;
public class zifushu {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String text=in.nextLine(); //用来接收字符串
int number=0; //定义三个变量来存储数字,字母,和其他字符的数量
int string=0;
int other=0;
for(int i=0;i<text.length();i++) //用来遍历整个字符串
{
char ch=text.charAt(i); //引用charAt()方法用来输出指定位置的字符内容
if(Character.isDigit(ch)) //判断是否为数字
{
number++;
}else if(Character.isLetter(ch)) //判断是否为字母
{
string++;
}else{ //否则就为其他类型的字符
other++;
}
}
System.out.println("number"+number);
System.out.println("string"+string);
System.out.println("other"+other);
}
}

 练习题三:

1.用户输入一段字符串,格式如:gdsd    2e3d    23434  v/f#$  dffbd

请输出这段字符串中的单词数量。

2.并将单词打印出来。

         /**
* 解题思路:输入数段个字符串,然后对每段字符串进行遍历,当遇到的不是字母时,则略过此字符串,进行遍历下一个
* 字符串 ,直到遇到空格前,遍历的都是字母,则该段字符串为单词。
* 注意:最后一个因为后面没有空格,要另行判断
*/
import java.util.*;
public class zifushu {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String text=in.nextLine();
boolean flag=true;
int number=0;
for(int i=0;i<text.length();i++) {
char ch = text.charAt(i);
if (flag && Character.isLetter(ch)) {
flag = true;
} else {
if (ch == ' ' && flag) {
number++;
flag = true;
} else if (ch == ' ' && (flag == false)) {
flag = true;
} else {
flag = false;
} }
if(flag)
{
number++;
} System.out.println(number);
} } }
 import java.util.*;
public class zifushu{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String text = in.nextLine();
boolean flag = true;
int number = 0;
int count = 0;
for (int i = 0; i < text.length(); i++) {
char ch = text.charAt(i);
if (flag && Character.isLetter(ch)) {
flag = true;
count++; } else {
if (ch == ' ' && flag)
{
number++;
System.out.println(text.substring(i - count, i));
count = 0; // System.out.println();
flag = true;
} else if (ch == ' ' && (flag == false)) {
flag = true;
} else {
flag = false;
// count=0;
} } }
if (flag) {
number++;
System.out.println(text.substring(text.length() - count, text.length()));
} System.out.println(number);
}
}

text.substring(i - count, i)可用来打印字符串中某一截的单词,

i-count代表所要打印的单词的开始位置,

i代表所要打印单词的末尾位置

练习题四: (最长路径问题)

*    12
8 9
11 7 16
13 9 8 7
可以从每个结点 往下,往左斜下,往右斜下分别遍历,以致找到一条从上到下的最长路径。
 /**
* 解体思路:要使从上往下挑选的路径数值最大,那就考虑从下往遍历,只要保证每次挑选的值最大。
* 因为最底层无法继续往下遍历,所以首先从倒数第二层开始。
* 定义三个变量,存放三条路径的值,比较后选出最大值。
* 所以还要定义一个与arr相同大小的数组brr,来存放各个结点可以选择的三天路径中的最大值
*
*
*/ public class lujing {
public static void main(String[] args) {
int[][] arr=new int[4][];
arr[0]=new int[]{12};
arr[1]=new int[]{8,9};
arr[2]=new int[]{11,7,16};
arr[3]=new int[]{13,9,8,7};
int r1=0;
int r2=0;
int r3=0;
int[][]brr=new int[4][]; //开辟一个大小和arr相等的数组brr来存放每次条选出的最大值
for(int i=0;i<arr.length;i++)
{
brr[i]=new int[i+1];
}
for(int i=0;i<arr.length;i++)
{
brr[3][i]=arr[3][i]; //因为最后一行不用计算出底下三条路径的值,所以直接将最后一层brr赋值给arr
} for(int i=arr.length-2;i>=0;i--) //从底下倒数第二层开始往上遍历
{
for(int j=0;j<arr[i].length;j++) //注意此处是i-- 和j++
{
if(j>0)
{
r1=arr[i][j]+brr[i+1][j-1]; //计算的是此节点和相同位置中brr数组中的值,以保证计算到最后的那个值
} //就是所要求的路径中的最大值
r2=arr[i][j]+brr[i+1][j];
r3=arr[i][j]+brr[i+1][j+1];
brr[i][j]=Math.max(r1,Math.max(r2,r3)); //调用Math.max()函数比较大小,
} //注意一次只能比较两个数
}
System.out.println(brr[0][0]);
}
}

Java第一次代码作业汇总的更多相关文章

  1. Java第一次考试作业

    这次考试感觉自己充分的意识到自己的不足,对于Java没有系统的理解,敲程方面也有很大问题,本次程序题目为ATM机的账户记录Account有账户的唯一性标识,用户的姓名,操作日期(Date),操作类型, ...

  2. java第一次作业0

    lsl321 java第一次作业 #1. 本章学习总结 你对于本章知识的学习总结 本章我们学习了各种java相关文件的使用,以及码云,博客,pat等程序辅助软件,这些对于我们专业的学习有非常大的帮助, ...

  3. Java第二次作业參考代码

    Java第二次作业參考代码 [程序11] 题目:有1.2.3.4四个数字,能组成多少个互不同样且无反复数字的三位数?都是多少? public class lianxi11 { public stati ...

  4. JAVA第一次blog总结

    JAVA第一次blog总结 0.前言 大一下学期我们开展了OPP这门课程,这也是我们第一次接触到JAVA.与上学期我们在学校里学C语言不同的是,这学期由于疫情原因我们是以网课的方式在学习.在学习中我发 ...

  5. java集合框架之java HashMap代码解析

     java集合框架之java HashMap代码解析 文章Java集合框架综述后,具体集合类的代码,首先以既熟悉又陌生的HashMap开始. 源自http://www.codeceo.com/arti ...

  6. C++ 第一次上机作业

    今天完成了C++第一次上机作业,感觉比较简单. 题目: 求2个数或3个正整数中的最大数,用带有默认参数的函数实现. 对3个变量按由小到大顺序排序,要求使用变量的引用. 编写一个程序,用同一个函数名对几 ...

  7. JAVA第十次作业

    JAVA第十次作业 (一)学习总结 1.用思维导图对java多线程的学习内容进行总结. 参考资料: XMind. 2.下面是一个单线程实现的龟兔赛跑游戏. public class TortoiseH ...

  8. JAVA第九次作业

    JAVA第九次作业 (一)学习总结 1.用思维导图对javaIO操作的学习内容进行总结. 参考资料: XMind. 2.下面的程序实现了文件的拷贝,但采用的是一个字节一个字节的读写方式,效率很低.使用 ...

  9. Java第二周作业

    Java第二周作业 本周作业: 参考http://www.cnblogs.com/rocedu/p/7911138.html 学习第二三章视频 参考http://www.cnblogs.com/roc ...

随机推荐

  1. 公文流转系统v0.1

    河北金力集团公文流转系统 1.项目需求: 河北金力集团是我省机械加工的龙头企业,主要从事矿山机械制造及各种机械零部件加工.企业有3个厂区,主厂区位于省高新技术开发区,3个分厂分别在保定.邢台和唐山.为 ...

  2. matplotlib 直方图

    一.特点 数据必须是原始数据不能经过处理,数据连续型,显示一组或多组分布数据 histogram 直方图 normed 定额 二.核心 hist(x, bins=None, normed=None) ...

  3. 安装mysql遇到的问题

    想在自己的PC上安装mysql服务器,首先在官网下载mysql的安装文件. MySQL安装文件分两种 .msi和.zip ,.msi需要安装,.zip文件需要配置环境变量. 我首先下载的是不需要安装的 ...

  4. UidGenerator springboot2集成篇

    uid-generator 官网集成文档: https://github.com/baidu/uid-generator/blob/master/README.zh_cn.md 由于并没有提供spri ...

  5. VMware 虚拟机开机黑屏

    先记录一下害我差点点就又跑去重装了 好几天未打开vm 打开就黑屏 打开虚拟机就是黑屏没反应 找了很久(好像是wegame的原因,昨晚上好像是打开了wegame更新2k和lol) 1献上解决方案 管理员 ...

  6. GitHub学习之路1

    对于代码的管理以及维护上,GitHub不失为一个较为明智的选择.而对于GitHub的灵活应用也是相当重要的,以下记录为以防自己忘记. 1. 创建SSH Key ssh-keygen -t rsa –C ...

  7. (1)C#连接数据库:Connection对象

    连接数据库:Connection对象 1.Connection对象概述   Connection对象是一个连接对象,主要功能是建立与物理数据库的连接.其主要包括4种访问数据库的对象类,也可称为数据提供 ...

  8. GP工作室—Alpha版本发布1

    目录 GP工作室-Alpha版本发布1 一.简介 1.1作业要求 1.2团队成员 二.软件下载安装说明 五.项目总结 @(Gold Point团队の项目计划) GP工作室-Alpha版本发布1 一.简 ...

  9. HTTP的传输编码(Transfer-Encoding:chunked)

    转载自HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP,本来是将这篇文章收藏在我的有道云笔记的,但是今天复习的时候看着这个标题这尴尬,这里转载一下-... 什么是传输编码? 传输编 ...

  10. PHP批量去除文件BOM头

    auto 是否自动替换 默认否 dir 检查目录 默认./ display 是否显示所有文件 默认只显示有bom头的文件 <?php empty($_GET['auto']) && ...