永发信息网

java高手看看

答案:3  悬赏:70  手机版
解决时间 2021-04-15 17:13

package mail.org;

import java.util.Stack;

public class Test {
private static String decimal2Hex(int dec) {
Stack<String> stack = new Stack<String>();
do {

char c = (char)(dec%16>9?(dec%16 + 55):(dec%16 + 48));
dec = dec/16;
stack.push(String.valueOf(c));
} while (dec!=0);

StringBuffer s = new StringBuffer();
while (!stack.isEmpty()) {
s.append(stack.pop());
}
return s.toString();
}
public static void main(String[] arg) {
System.out.println("decimal2Hex(249)=["+decimal2Hex(249)+"]");
System.out.println("decimal2Hex(945)=["+decimal2Hex(945)+"]");
}
}

运行结果是

decimal2Hex(249)=[F9]
decimal2Hex(945)=[3B1]

请帮我解释下加粗部分的程序 谢谢

最佳答案
decimal2Hex(int dec) :定义了一个静态的私有的方法。带形参 int类型的变量dec
(dec%16>9?(dec%16 + 55):(dec%16 + 48)); x ? y : z; 若x为真,则取y的值,若x为假,则取z的值。这里实参dec除以16若余数大于9则采用(dec%16 + 55)的值,若余数小于等于9,则采用(dec%16 + 48)选择好后,强制转化为char类型。
dec = dec/16;。。。这个么,dec除以16,把值返回给dec。

stack.push(String.valueOf(c))查api文档讲的很详细啊。stack.push()把项压入栈顶。其作用和下面的方法相同:addElement(item)。也就是说,将“String.valueOf(c)”的返回值放入内存栈空间,String.valueOf(c)返回一个字符串“c”,压入栈空间即作为一个变量。

while (!stack.isEmpty()) :isEmpty():继承自Vector的方法,意思这个向量不包含组件(前面加“!”意思为“只要这个向量包含组件,不是空的”),则执行下面循环。

s.append(stack.pop()) : stringbuffer类的appendix方法,(stack.pop()移除栈顶对象并作为此函数的值返回该对象,本例是返回前面放到栈里面的“c”。)这里的意思是将字符串的内容追加到变量“s”后面。

return s.toString(); : return:函数返回值,这里调用String类的toString方法,重写了的,这里的意思是调用了这个函数,返回s的字符串。

"decimal2Hex(249)=["+decimal2Hex(249)+"]" : 重点说下这里,把表达式写清楚点你就明白了
"decimal2Hex(249)=[" + decimal2Hex(249) + "]"
你看第一个双引号和第二个双引号之间,那里面的东西是以字符串形式打印出来的,不会改变。两个加号中间,是我们的变量,这个变量时调用了decimal2Hex方法,将249这个数放进方法里处理加工,返回一个字符串,紧接着 "decimal2Hex(249)=[" 打印出来,最后再加上“]”。

看样子是初学者吧,这些都是基本的语法,没有什么难度的,建议到网上找找视频教程,看一下语法方面的基础吧。
全部回答

这是一个操作内存的类,stack表示内存的堆,内存分为堆和栈。

堆的特点为:后进先出,意思就是说如果你向堆中存放数据,比如存入3个数字3,2,1,依次放入堆中,

然后取出放入的值,那么取出后的顺序为1,2,3。

String decimal2Hex(int dec)的意思是声名了一个返回值为String 类型的方法参数为int型的dec

然后构造了一个堆对象stack,其中<string>的意思表示泛型,说明该对象中只能存放string类型的变量。

dec%16>9?(dec%16 + 55):(dec%16 + 48)这个意思是根据传入的参数来判断,dec%16表示取余数,如果余数大于9,则执行dec%16+55如果小于9则执行dec%16+48。然后将得到的值转换为char类型赋值给变量c.dec = dec/16;这个是变量dec除以16后再赋值给dec变量。 stack.push(String.valueOf(c));这个是将变量c转换为String类型然后存入堆对象stack中。

while (!stack.isEmpty()) { s.append(stack.pop()); } return s.toString(); } 这几行是一个循环,用于判断stack中是否为空,如果不为空则循环将变量从stack对象中移除,并放入到stringbuffer对象中。s.toString()方法时将stringbuffer类型的对象转换为string类型。

其他的没什么了,至于程序的执行结果,自己根据我的解释分析一下吧!~

第一句是初始化一个能装载String类型的栈,第二句是入栈,后边的while循环是在在栈不为空的情况下将栈顶元素加入到字符缓冲区中

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
什么锁屏可以设置动态图做锁屏壁纸?
陈塘庄站这个地址在什么地方,我要处理点事
nokia7610问题
福建漳浦有哪些好玩的地方?
皇马差巴萨到底有几个档次?
玩生化4的朋友请进
08冬季穿着流行什么趋势了?18岁哒青年人,最
玉柴4110中冷增压发动机高温,水温表只显示60
帮我来解决一道数学题!!!!!!
QQ游戏人生怎么闹,怎么申请我加入?
兰州到定西的汽车票多少钱
交通银行哪种信用卡好,交通银行信用卡办理需
fit,match,suit的区别
我英语很差,我想在网上,下载个英语词典,可
我适合染什么颜色
推荐资讯
你若为门中弟子伤她一分歌词
李姓在唐朝成为第一大姓的主要原因是李为国姓
请问 联想天逸F41 5750 支持 Aero效果吗?在
三国怎样点亮
福建就是福州吗? 急!!
上面是林字中间爻下面大是什么字
骂不负责任的男人语句,形容人忘恩负义的诗句
冒险岛黄水晶78-89带鸟2多少钱
华德福的教学理念
阴天快乐的含义,关于陈奕迅《阴天快乐》有什
长沙市雨花区哪里有卖皮蛋瘦肉粥的?
元中都建在哪里?是历史上的第几座皇宫?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?