Java第一次代码作业汇总
练习题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第一次代码作业汇总的更多相关文章
- Java第一次考试作业
这次考试感觉自己充分的意识到自己的不足,对于Java没有系统的理解,敲程方面也有很大问题,本次程序题目为ATM机的账户记录Account有账户的唯一性标识,用户的姓名,操作日期(Date),操作类型, ...
- java第一次作业0
lsl321 java第一次作业 #1. 本章学习总结 你对于本章知识的学习总结 本章我们学习了各种java相关文件的使用,以及码云,博客,pat等程序辅助软件,这些对于我们专业的学习有非常大的帮助, ...
- Java第二次作业參考代码
Java第二次作业參考代码 [程序11] 题目:有1.2.3.4四个数字,能组成多少个互不同样且无反复数字的三位数?都是多少? public class lianxi11 { public stati ...
- JAVA第一次blog总结
JAVA第一次blog总结 0.前言 大一下学期我们开展了OPP这门课程,这也是我们第一次接触到JAVA.与上学期我们在学校里学C语言不同的是,这学期由于疫情原因我们是以网课的方式在学习.在学习中我发 ...
- java集合框架之java HashMap代码解析
java集合框架之java HashMap代码解析 文章Java集合框架综述后,具体集合类的代码,首先以既熟悉又陌生的HashMap开始. 源自http://www.codeceo.com/arti ...
- C++ 第一次上机作业
今天完成了C++第一次上机作业,感觉比较简单. 题目: 求2个数或3个正整数中的最大数,用带有默认参数的函数实现. 对3个变量按由小到大顺序排序,要求使用变量的引用. 编写一个程序,用同一个函数名对几 ...
- JAVA第十次作业
JAVA第十次作业 (一)学习总结 1.用思维导图对java多线程的学习内容进行总结. 参考资料: XMind. 2.下面是一个单线程实现的龟兔赛跑游戏. public class TortoiseH ...
- JAVA第九次作业
JAVA第九次作业 (一)学习总结 1.用思维导图对javaIO操作的学习内容进行总结. 参考资料: XMind. 2.下面的程序实现了文件的拷贝,但采用的是一个字节一个字节的读写方式,效率很低.使用 ...
- Java第二周作业
Java第二周作业 本周作业: 参考http://www.cnblogs.com/rocedu/p/7911138.html 学习第二三章视频 参考http://www.cnblogs.com/roc ...
随机推荐
- pyhton 线程锁
问题:已经有了全局解释器锁为什么还需要锁? 答:全局解释器锁是在Cpython解释器下,同一时刻,多个线程只能有一个线程被cpu调度 它是在线程和cpu之间加锁,线程和cpu之间有传递时间,即使有GI ...
- 11、python模块的导入
前言:本文主要介绍python模块的导入,包括模块的定义.模块的作用.导入方式以及模块的搜索路径. 一.模块的定义 python模块(module),简单来说就是一个python文件,以.py结尾,文 ...
- BZOJ 3513 idiots
题目传送门 分析: FFT一手统计两根棍子相加的方案 然后一个值2S可能会被同一根S自己乘自己得到 然后要减去 其次,A+B和B+A会被算成两种方案,所以还要除以2 然后不太好算合法的方案数,但是非法 ...
- python,finally的应用
脚本执行过程中可能因为被测试的环境有改变导致中间某一部分无法继续执行下去 可以在最后一行加上finally来执行最后一句脚本 比如 最后执行退出 表示 无论中间过程失败还是成功,最终都会执行退出操作 ...
- 使用Airtest进行UI自动化测试
一.环境搭建 1.Airtest客户端下载 访问官网http://airtest.netease.com/,根据自己的系统下载相应的客户端安装: 2.python工具下载与环境搭建 在本地python ...
- Flutter开发之Widget学习
一.Text 组件 属性 textAlign: TextAlign.left, -----文本对齐方式 maxLines: 1, ...
- 微信小程序框架分析小练手(三)——仿香哈菜谱小程序制作
香哈菜谱是一款围绕美食而成的小程序,在这里可以查看各式各样的菜谱. 一.打开微信开发者工具,新建一个项目:xhcp.如下图: 二.建立如下的一些目录: 三.将底部标签导航图标.美食轮播图片.宫格导航图 ...
- Python小白入门题一——文件增删改
题目描述:用python对文件进行增(创建一个文件).删(删除一个文件).改(重命名)操作. 说明:新建了一个文件夹files存放新增的两个文件,随后这两个文件被批量重命名成“数字.txt”,之后这两 ...
- 3.部署场景1:带有遗留的Open vSwitch
部署场景1:带有遗留的Open vSwitch 此场景描述了使用带有Open vSwitch(OVS)的ML2插件的OpenStack网络服务的(基本)实现. 遗留的实现通过为普通用户提供一种方法来管 ...
- jQuery初学者笔记 一
jQuery初学者笔记 一 Mirror王宇阳 by jQuery语法 jQuery语法是通过选取HTML元素,并对选取的元素进行操作 基础语法: 所有jQuery语句用"$"符号 ...