这段代码的运行结果后面总是跟得有一个null,该怎么去掉?拜托啦

刃雪 2014-04-05 10:26:16
import java.util.Scanner;
public class jinzhi {
public static void main(String[] agrs){
jzzh x=new jzzh();
Scanner in=new Scanner(System.in);
String hex;
int a=in.nextInt();
hex=x.jzzh(a);
System.out.println(hex);
}
}

class jzzh {

public char zfzh(int a){
if(a>=0&&a<10){
return((char)(a+'0'));
}else{
return((char)(a-10+'a'));
}
}
public String jzzh(int a){
String ch=null;
while(a>=16){
int b;
b=a%16;
ch = zfzh(b) + ch;
ch=ch.trim();
a=a/16;
if(a==0){break;
}
if(a>0&&a<16){

ch=zfzh(a)+ch;
}
}

return ch;
}
}
...全文
198 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
-江沐风- 2014-04-05
  • 打赏
  • 举报
回复
引用 4 楼 u014562797 的回复:
谢谢了,好人呀!
不用客气的
刃雪 2014-04-05
  • 打赏
  • 举报
回复
引用 2 楼 u012724379 的回复:
import java.util.Scanner;

public class jinzhi
{
	public static void main(String[] agrs)
	{
		jzzh x = new jzzh();
		Scanner in = new Scanner(System.in);
		String hex;
		int a = in.nextInt();
		hex = x.jzzh(a);
		System.out.println(hex);
	}
}

class jzzh
{

	public char zfzh(int a)
	{
		if (a >= 0 && a < 10)
		{
			return ((char) (a + '0'));
		} 
		else
		{
			return ((char) (a - 10 + 'a'));
		}
	}

	public String jzzh(int a)
	{
		String ch = null;
		while (a >= 16)
		{
			int b;
			b = a % 16;
			//ch = zfzh(b)+ch;
			ch = String.valueOf(zfzh(b));     //把上面那局换为这句;
			ch = ch.trim();
			a = a / 16;
			if (a == 0)
			{
				break;
			}
			if (a > 0 && a < 16)
			{

				ch = zfzh(a) + ch;
			}
		}

		return ch;
	}
}
非常感谢
刃雪 2014-04-05
  • 打赏
  • 举报
回复
引用 1 楼 wlwlwlwl015 的回复:
因为你main方法打印的hex字符串就是null。。 我估计你输入的是个整数,调用的public String jzzh(int a),你定义了局部变量String ch=null,你只写了if条件,刚好你输入的这个数字不满足任何一个if块,所以程序走到了return ch这了,得到的是null,你打印的自然就是null了。 建议你按照Java代码书写规范写代码,那样更加清晰,类名首字母 写,方法名小写。。等等。
谢谢了,
刃雪 2014-04-05
  • 打赏
  • 举报
回复
谢谢了,好人呀!
-江沐风- 2014-04-05
  • 打赏
  • 举报
回复
引用 1 楼 wlwlwlwl015 的回复:
因为你main方法打印的hex字符串就是null。。 我估计你输入的是个整数,调用的public String jzzh(int a),你定义了局部变量String ch=null,你只写了if条件,刚好你输入的这个数字不满足任何一个if块,所以程序走到了return ch这了,得到的是null,你打印的自然就是null了。 建议你按照Java代码书写规范写代码,那样更加清晰,类名首字母 写,方法名小写。。等等。
因为他的这句:
ch = zfzh(b)+ch;
-江沐风- 2014-04-05
  • 打赏
  • 举报
回复
import java.util.Scanner;

public class jinzhi
{
	public static void main(String[] agrs)
	{
		jzzh x = new jzzh();
		Scanner in = new Scanner(System.in);
		String hex;
		int a = in.nextInt();
		hex = x.jzzh(a);
		System.out.println(hex);
	}
}

class jzzh
{

	public char zfzh(int a)
	{
		if (a >= 0 && a < 10)
		{
			return ((char) (a + '0'));
		} 
		else
		{
			return ((char) (a - 10 + 'a'));
		}
	}

	public String jzzh(int a)
	{
		String ch = null;
		while (a >= 16)
		{
			int b;
			b = a % 16;
			//ch = zfzh(b)+ch;
			ch = String.valueOf(zfzh(b));     //把上面那局换为这句;
			ch = ch.trim();
			a = a / 16;
			if (a == 0)
			{
				break;
			}
			if (a > 0 && a < 16)
			{

				ch = zfzh(a) + ch;
			}
		}

		return ch;
	}
}
小灯光环 2014-04-05
  • 打赏
  • 举报
回复
因为你main方法打印的hex字符串就是null。。 我估计你输入的是个整数,调用的public String jzzh(int a),你定义了局部变量String ch=null,你只写了if条件,刚好你输入的这个数字不满足任何一个if块,所以程序走到了return ch这了,得到的是null,你打印的自然就是null了。 建议你按照Java代码书写规范写代码,那样更加清晰,类名首字母 写,方法名小写。。等等。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧