练习题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. (分块暴力)Time to Raid Cowavans CodeForces - 103D

    题意 给你一段长度为n(1 ≤ n ≤ 3·1e5)的序列,m (1 ≤ p ≤ 3·1e5)个询问,每次询问a,a+b,a+2b+...<=n的和 思路 一开始一直想也想不到怎么分,去维护哪些 ...

  2. 【转载】Notepad++源码分析

    在网上发现了一个哥们写了关于Notepad++源码的文章,不过就写了一就没有了,我就接着他的工作再说说吧! 大三了,也写了一点儿程序了,但是如果只是按照自己的思路写下去恐怕难以提高,于是准备开始阅读一 ...

  3. AI领域有什么职业?怎样才能在AI领域找到工作?

    AI领域是一个很吃香的行业,在这个行业中,很多人都是高薪的,而且有些学生为了以后能够接触到这个行业,都在大学的时候,学习这个专业,那么大家知道AI领域有什么职业吗?下面我们就来给大家讲解一下. 1.算 ...

  4. python,读取txt的方法和应用

    1.读取txt内的百度盘地址,循环保存到百度云中(直接访问下方地址) https://www.cnblogs.com/becks/p/11409467.html 2.读取txt内参数,循环执行查询,读 ...

  5. JS-04-流程控制和循环

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. GC原理---垃圾收集器

    垃圾收集器 如果说收集算法是内存回收的方法论,垃圾收集器就是内存回收的具体实现 Serial收集器 串行收集器是最古老,最稳定以及效率高的收集器,可能会产生较长的停顿,只使用一个线程去回收.新生代.老 ...

  7. 尼姆博弈+SG函数

    博弈这个东西真的很费脑诶.. 尼姆博奕(Nim Game):游戏者轮流从一堆棋子(或者任何道具)中取走一个或者多个,最后不能再取的就是输家.当指定相应数量时,一堆这样的棋子称作一个尼姆堆 当n堆棋子的 ...

  8. IIS发布网站常见MIME扩展类型添加

    # This file maps Internet media types to unique file extension(s). # Although created for httpd, thi ...

  9. 【WPF学习】第三十一章 WPF命令模型

    WPF命令模型由许多可变的部分组成.总之,它们都具有如下4个重要元素: 命令:命令表示应用程序任务,并且跟踪任务是否能够被执行.然而,命令实际上不包含执行应用程序任务的代码. 命令绑定:每个命令绑定针 ...

  10. <状压DP>solution-POJ3311_Hie with the Pie

    Hie with the Pie Description The Pizazz Pizzeria prides itself in delivering pizzas to its customers ...