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 ...
随机推荐
- Qt Installer Framework翻译(3-2)
添加组件 如果用户在初始安装期间未选择所有可安装组件,则后续也可以使用包管理器从仓库中获取剩余组件进行安装.包管理器是维护工具的一部分,该维护工具在初始安装过程中与应用程序一起被安装.仅当包含组件的仓 ...
- 机器学习回顾篇(15):集成学习之GDBT
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- NIO&AIO编程模型
NIO线程模型 什么是NIO线程模型? 上图是NIO的线程模型, 基于select实现, 这种线程模型的特点: 多条channel通过一个选择器和单挑线程绑定, 并且在这种编程模型中, Cha ...
- Visual studio之C#的一些常见问题01switch case常量
switch() {case CONST: break;}语句中,case后面的常量表达方法在C/C++中,switch() {case CONST: break;}语句中的CONST常常使用宏定义来 ...
- 使用dlib基于CNN(卷积神经网络)的人脸检测器来检测人脸
基于机器学习CNN方法来检测人脸比之前介绍的效率要慢很多 需要先下载一个训练好的模型数据: 地址点击下载 // dlib_cnn_facedetect.cpp: 定义控制台应用程序的入口点. // # ...
- mybatis 源码分析中的知识点
1. resultMap 和 resultType 之间的优劣 resultMap: 在联合查询的时候, 可以不用写Join (因为在resultMap 的定义里面已经写了这些东西了<asso ...
- Java Email 邮件发送
自己所编码的项目出现了问题,且是 24 小时运行于服务器上的. 如果出错了,那么我们也无从而知. 这个时候,只能通过异常捕获,然后将异常信息发送至开发者的邮箱上. 但是一个邮件的发送配置冗长,代码量至 ...
- pymysql连接提示format: a number is required, not str
最近想随手写一个简单的员工管理系统,第一次使用python连接数据库,在这个过程中就遇到了一些问题,遂记录 遇到问题习惯性百度一下,很多教程都不适合新手,有些还不知道是不是瞎写的,所以我觉得有必要自己 ...
- 暑假第六周总结(对HBASE进行编程实践并且安装Redis)
本周主要是根据教程对HBASE进行了编程实践,对于hadoop的编程来说需要用到很多的.jar 包,在进行编程实践的时候需要参照相关的教程将jar包添加至程序当中去.教程上给的代码还是比较详细的,加上 ...
- 配置微软Azure大数据HDInsight云集群
配置微软Azure大数据HDInsight云集群,存储账户.托管标识等问题也都参考官方文档解决了. 原文在我的开源中国博客 https://my.oschina.net/finchxu/blog/31 ...