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 ...
随机推荐
- python小知识点总结
小知识点总结 1.python2和python3的区别 python2 python3 默认编码 ascii utf-8 input() raw_input() input() print 可以不 ...
- Django 连接mysql 踩过的坑
1.创建数据库 2.在Django项目文件下的settings.py配置数据库 3.在Django项目__init__.py文件中,用pymysql代替MySqlDB import pymysql p ...
- (转自360安全客)深入理解浏览器解析机制和XSS向量编码
(译者注:由于某些词汇翻译成中文后很生硬,因此把相应的英文标注在其后以便理解.这篇文章讲的内容很基础,同时也很重要,希望对大家有所帮助.) 这篇文章将要深入理解HTML.URL和JavaScript的 ...
- AutoIT测试实例
AutoIT是一款非常强大的免费功能自动化测试工具,使用它可以轻松实现web和winform的自动化测试.其脚本语言AU3语法类似于VB语言和vbs脚本语言,对于经常使用QTP的童鞋来说,非常容易上 ...
- C语言博客作业7
本周作业头 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 作业链接 我在这个课程的目标是 熟练运用switch语句 这个作业在那个具体方面帮助我实现目标 完成pta作业 参考文献 文章 ...
- .net core 认证与授权(一)
前言 .net core web并不是一个非常新的架构,很多文章提及到认证与授权这个过程,但是一般都会提及到里面的方法怎么用的,而不是模拟一个怎样的过程,所以我打算记录自己的理解. 什么是认证?我们大 ...
- 搭建DevOps模式的项目
在后端的开发领域,各类开发框架都已经很多,在开发项目时可以根据不同的需要和需求选择合适的开发框架.然而在需要开发一个完善的工程化项目时,仅仅一个后端开发框架是不够的,还面临着在对开发项目的快速迭代中进 ...
- redis 常用命令行
一.key 相关: ()redis允许模糊查询 key(keys *) 有3个通配符 *.?.[] ()randomkey:返回随机key ()type key:返回key存储的类型 ()exists ...
- Nginx之keepalived高可用工具
1.创建两台虚拟机,分别为主机和从机,区别两台虚拟机的IP地址 2. 将keepalived上传到linux系统当中 3. cd /usr/local目录 4. tar -zxvf keepalive ...
- Codeforces_801
A.直接暴力就行了,先把能组合的按线性组合掉,再枚举剩下相邻没用过的. #include<bits/stdc++.h> using namespace std; string s; ] = ...