用Java编写一个程序,要求如下:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Java编写一个程序,要求如下:相关的知识,希望对你有一定的参考价值。

已知含有学生生日信息的字符串,如:"张小三 2001-11-22,李小四 2001-02-05,王小五 2003-10-04",请编程计算每个学生的周岁是多少(与程序执行日相差多少整年)。并将结果生成结果字符串,如:"张小三 20岁,李小四 21岁,王小五 18岁",并显示。生成结果字符串时为提高效率,请使用StringBuilder类。学生数据也可以自行编制。

1.内部使用 C 的 longjmp 机制让出一个协程。 因此,如果一个 C 函数 foo 调用了一个 API 函数, 而这个 API 函数让出了(直接或间接调用了让出函数)。 由于 longjmp 会移除 C 栈的栈帧, Lua 就无法返回到 foo 里了。

2.为了回避这类问题, 碰到 API 调用中调用让出时,除了那些抛出错误的 API 外,还提供了三个函数: lua_yieldk, lua_callk,和 lua_pcallk 。 它们在让出发生时,可以从传入的 延续函数 (名为 k 的参数)继续运行。
3.我们需要预设一些术语来解释延续点。 对于从 Lua 中调用的 C 函数,我们称之为 原函数。 从这个原函数中调用的上面所述的三个 C API 函数我们称之为 被调函数。 被调函数可以使当前线程让出。 (让出发生在被调函数是 lua_yieldk, 或传入 lua_callk 或 lua_pcallk 的函数调用了让出时。)
4.假设正在运行的线程在执行被调函数时让出。 当再次延续这条线程,它希望继续被调函数的运行。 然而,被调函数不可能返回到原函数中。 这是因为之前的让出操作破坏了 C 栈的栈帧。 作为替代品,Lua 调用那个作为被调函数参数给出的 延续函数 。 正如其名,延续函数将延续原函数的任务。
5.注意这里那个额外的显式的对延续函数的调用:Lua 仅在需要时,这可能是由错误导致的也可能是发生了让出而需要继续运行,才会调用延续函数。 如果没有发生过任何让出,调用的函数正常返回, 那么 lua_pcallk (以及 lua_callk)也会正常返回。 (当然,这个例子中你也可以不在之后调用延续函数, 而是在原函数的调用后直接写上需要做的工作。)
6.Lua 会把延续函数看作原函数。 延续函数将接收到和原函数相同的 Lua 栈,其接收到的 lua 状态也和 被调函数若返回后应该有的状态一致。 (例如, lua_callk 调用之后, 栈中之前压入的函数和调用参数都被调用产生的返回值所替代。) 这时也有相同的上值。 等到它返回的时候,Lua 会将其看待成原函数的返回去操作。

7.我们需要预设一些术语来解释延续点。 对于从 Lua 中调用的 C 函数,我们称之为 原函数。 从这个原函数中调用的上面所述的三个 C API 函数我们称之为 被调函数。 被调函数可以使当前线程让出。 (让出发生在被调函数是 lua_yieldk, 或传入 lua_callk 或 lua_pcallk 的函数调用了让出时。)
8.假设正在运行的线程在执行被调函数时让出。 当再次延续这条线程,它希望继续被调函数的运行。 然而,被调函数不可能返回到原函数中。 这是因为之前的让出操作破坏了 C 栈的栈帧。 作为替代品,Lua 调用那个作为被调函数参数给出的 延续函数 。 正如其名,延续函数将延续原函数的任务。

希望能帮到你,谢谢!

参考技术A import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Test
public static void main(String[] args) throws ParseException
String str="张小三 2001-11-22,李小四 2001-02-05,王小五 2003-10-04";
String dateComent="0123456789-";
StringBuilder name=new StringBuilder();
StringBuilder date=new StringBuilder();
Boolean clear=false;
Calendar cd = Calendar.getInstance();
for(int i=0;i<str.length();i++)
if(clear==true)
name.delete(0, name.length());
date.delete(0, date.length());
clear=false;

if(dateComent.indexOf(str.charAt(i))>-1)
date.append(str.charAt(i));
else if(','==str.charAt(i) || i==str.length()-1)
cd.setTime(new Date());
Calendar cdThat = Calendar.getInstance();
cdThat.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(date.toString()));
cd.get(Calendar.YEAR);
System.out.println(name.toString()+" "+(cd.get(Calendar.YEAR)-cdThat.get(Calendar.YEAR))+"岁");
clear=true;
else
name.append(str.charAt(i));



用嵌套的for循环编写程序,要求通过这个嵌套的循环在屏幕上打印下列图案:

编写程序:读入一个整数,显示它的所有素数银子,例如,若输入整数为120,输出应为2、2、2、3、5.

1、首先打开编译器,首先输入头文件,写好Main函数,定义好需要用到的变量,如下图所示。

2、然后写下第一个For循环,也是外围的for循环,为了便于观察结果,这里使用Printf函数在每次循环时,打印变量的值,如下图所示。

3、在外围For循环内部再写下一个for循环,其中的变量可以独立变化,也可以与外围for循环中的变量建立关系,如下图所示。

4、调试并运行程序,如下图所示。

5、此时,通过观察程序运行结果可以看到,外围for循环每进行一次,内部嵌套的for循环就要完整进行一轮,如下图所示。

参考技术A

图片上的图形输出代码:

public class demo

public static void main(String[] args)
for(int i=1;i<=9;i++)
for(int z=(9-i)*2;z>=1;z--)
System.out.print(" ");

for(int x=1;x<=i;x++)
System.out.print(x+" ");

for(int y=i-1;y>=1;y--)
System.out.print(y+" ");

System.out.println();


显示一个整数的所有素数因子:

public class demo 

public static void main(String[] args) throws Exception 
Scanner cin = new Scanner(System.in);
System.out.print("请输入一个正整数:");
int n = cin.nextInt();
System.out.print(n + "=");
int count = 0;
for (int i = 2; i <= n; i++) 
if (n % i == 0) 
if (count == 0)
System.out.print(i);
else
System.out.print("*" + i);
count++;
n = n / i;
i--;



如果我的回答对你的学习有帮助的话,请采纳哦 谢谢 不懂的可以再追问

本回答被提问者和网友采纳

以上是关于用Java编写一个程序,要求如下:的主要内容,如果未能解决你的问题,请参考以下文章

用java编写一个程序 用于实现Runnable接口并创建两个线程

求教用java编写一个程序要求给定一个日期值,计算若干天后的日期值,和给定两个日期计算它们之间相距的天

要求编写一个java程序,输入学生信息,并能保存与显示学生信息。

用java怎样编写一个二维坐标平移程序

用java编写一个应用程序:要求用户输入一系列字符串,每个字符串占一行 ? 求高手帮忙。。。

用java语言编写一个万年历程序,要求只显示阳历、节日、还有农历年、闰年