帮看个JAVA小程序语法问题

帮看个JAVA小程序语法问题,第1张

估计这个要打些字呢。

先说第一个问题吧。

//这句话中怎么调用的compare方法 给详细讲解下

这个问题主要就是解释下这句话a[j]compare(a[j+1]) 。

我们不用考虑这么多日期,就拿两个日期来讲吧,道理是一样的。

假设是a1compare(a2),执行这行代码的时候就会进入public int compare(Date date) {}方法。你的一系列问题也在这里啊。

------------------------------------------------------------------

public int compare(Date date) { //我不明白这里的(Date date)是什么意思 进来的时候是2个参数

----------------------------------------------------华丽的分割线

这个是传进来一个参数,举个例子,假设方法我改造如下:

public int compare(int date)

public int compare(String date)

public int compare(double date)

你能明白上面三个方法的意思么。就是传进来一个参数date,第一个它的类型是int,第二个是string 最后一个是double类型。同理public int compare(Date date)的意思就是传进来一个参数date它的类型是Date。不要被小写的date搞的迷惑了 也可以写成public int compare(Date a2)道理是一样的。date只不过是个名称,Date是这个参数名称的类型。

---------------------------------------------------------------

//到这句话中哪个是year哪个是dateyear

----------------------------------------------------华丽的分割线ag

我把上面代码改写下,你会清楚些。

public int compare(Date date) {

return thisyear > dateyear 1

: thisyear< dateyear -1 : thismonth > datemonth 1

: thismonth < datemonth -1

: thisday > dateday 1

: thisday < dateday -1 : 0;

}

我在一些变量前面加上了this。代表对象本身。举个例子:

a1compare(a2) 就是对象a1调用他的compare方法。而a2是做为Date型参数传进来,结果就相当于下面:(实际代码不能这么写,只是示范)

public int compare(Date a2) {

return a1year > a2year 1

: a1year< a2year -1 : a1month > a2month 1

: a1month < a2month -1

: a1day > a2day 1

: a1day < a2day -1 : 0;

明白了吗?year前面默认不加上"this"的话,也还是指对象本身的属性,新手常常会混淆。

---------------------------------------------------------------------

三目的这个运算明白 给讲讲上面的语法就行

--------------------------------------------------------------------囧

这个比较难讲了 大概说下吧。

1 a1year > a2year 1

2 : a1year< a2year -1 3 : a1month > a2month 1

4 : a1month < a2month -1

5 : a1day > a2day 1

6 : a1day < a2day -1 : 0);

先解释下运算符 a1 > a2 1:0 这句话的意思是如果a1大于a2是真的话,就取问号后面的第一个数,也就是1是假的话就取冒号后面的0

接着解释上面代码。 第一行 如果a1的年大于a2的年,那么好说,后面不必比较了a1这个日期肯定大于a2,直接返回1但是如果是假d的话,就要取冒号后面的参数也就是2-6行的所以代码。2-6行里面又嵌套了几个运算符,第2行的意思就是如果a1的年小于a2的年,那么返回-1,也还是不用比较了,你a1的年份就是比我a2小了,这时候如果a1等于a2年份的话,就不返回-1了还要继续比较月份,也就是后面的代码,3行的代码。以后我就不解释了,你自己揣摩揣摩吧,就说这么多了,手疼。。

#include <iostream>

using namespace std;

#define m 45

#define n 100

#define t 10

int main()

{

FILE fp;

char filename[20],c[n];

printf("Type the file name which you want to open:");

scanf("%s",&filename);

fp=fopen(filename,"r+"); /以r-只读方式打开指定文件/

if((fp=fopen(filename,"r"))==NULL) /文件不存在输出错误/

{cout<<"文件不存在!"<<endl;exit(-1);}

cout<<"文件中内容如下:"<<endl;

for(int j=0;!feof(fp);j++){

c[j]=fgetc(fp);//从流中读取字符

}

char keyword[m][t]={"include","int","string","cout","cin","auto","break","case","char","class","const",

"continue","default","delete","do","double","else","enum","extern","float","for","friend","if","inline",

"int","long","new","operator","private","protected","public","register","return","short","sizeof","static",

"struct","switch","template","this","typedef","union","virtual","void","while"};//关键字数组

char a[t],p=c,q=a,s=a;

bool w=0,r=0;

int i=0;

for(i=0;i<10;i++)a[i]=NULL;//初始化临时数组

while (p !=NULL){

q=s=a;

if((p>='a'&&p<='z')||(p>='A'&&p<='Z')||p=='_'){//识别标识符

q=p;p++;q++;

while ((p>='a'&&p<='z')||(p>='A'&&p<='Z')||(p>='0'&&p<='9')||p=='_'){

q=p;p++;q++;

}

for(i=0;i<m;i++)if(strcmp(keyword[i],a)==0){r=1;break;}

if(r==1){cout<<"关键字为:";r=0;}

else cout<<"标识符为:";

while(s!=q){

cout<<s;

s++;

}

cout<<endl;

for(i=0;i<t;i++)a[i]=NULL;

}

else if(p=='\''){//识别字符常量

p++;

while(p!='\''){

q=p;

p++;

q++;

}

cout<<"字符常量为:";

while(s!=q){

cout<<s;

s++;

}

cout<<endl;

for(i=0;i<t;i++)a[i]=NULL;

p++;

}

else if(p=='\"'){//识别字符串常量

p++;

while(p!='\"'){

q=p;

p++;

q++;

}

cout<<"字符串常量为:";

while(s!=q){

cout<<s;

s++;

}

cout<<endl;

for(i=0;i<t;i++)a[i]=NULL;

p++;

}

else if(p=='+'||p=='-'||p==''||p=='/'||p=='='||p=='%'||p=='/'){//识别运算符

cout<<"运算符为:"<<p;

cout<<endl;

p++;

}

else if(p==';'||p==','){//识别分解符

cout<<"分界符为:"<<p;

cout<<endl;

p++;

}

else if(p>='0'&&p<='9'){

s=q=a;

q=p;p++;q++;

while(p>='0'&&p<='9'||p==''){

q=p;p++;q++;

}

while(s!=q){

if(s==''){w=1;break;}//识别实型常量

s++;

}

s=a;

if(w ==1){

cout<<"实型常量为:";

while(s!=q){

cout<<s;

s++;

}

for(i=0;i<t;i++)a[i]=NULL;

}

else {

cout<<"整型常量为:";

while(s!=q){//识别整型常量

cout<<s;

s++;

}

for(i=0;i<t;i++)a[i]=NULL;

}

cout<<endl;

}

else p++;

}

return 0;

}

以上就是关于帮看个JAVA小程序语法问题全部的内容,包括:帮看个JAVA小程序语法问题、求C语言编译原理语法分析程序、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9770987.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存