/** * 程序的唯一入口点 main 方法 * @param args 传递至 main 的参数 */ public static void main(String[] args) {
ToBinaryString newNum = new ToBinaryString(); newNum.display();
} }
利用栈的操作 一下代码没测试过,有问题自己调试吧 public class StackBinary { public static void main(String[] args) { try { Stack stack = new Stack(); Scanner scanner = new Scanner(System.in); System.out.print("input an positive integer:"); int num = scanner.nextInt();
//use stack to convert num to binary while (num>=2) { stack.push(""+num%2); num >= 1; // num /= 2;也可以 } stack.push(num); //print result System.out.print("result is: "); while (statck.size()>0) { System.out.print(statck.pop()); } System.out.println(); } catch (Throwable e) { e.printStackTrace(); } } }
ArrayList<Integer> numArray = new ArrayList<Integer>();这是什么意思 我不懂这个语法< >
回复zbl0201: JAVA新增的特性:泛型数组列表
import java.util.*; public class DecimalistToBinary { public static void main(String[]args) { if(0==args.length) { System.out.println("您没有输入正整数(int类型)"); System.exit(0);//从用户的角度来考虑,这里不应该退出,应该给用户 //一个重新输入的机会.但为了简化,这里直接退出了 } try { int num = Integer.parseInt(args[0]); if(num<0) { System.out.println("请输入正整数"); System.exit(0);//同前 }
java.lang.Integer这个API包中有进制转换的函数
public static String toBinaryString(int i)
也可以自定义函数:*/
package review;/**
* 导入相应的包类
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;public class ToBinaryString {
/**用于连接所有计算出来的二进制字符,以字符串形式存储*/
String BinaString;
/**
* 构造方法
*/
protected ToBinaryString(){
}
/**
* 此方法用于计算二进制
* @param num 为要转换成二进制的数
*/
public String toBinaString(int num){
/**定义一个ArrayList对象用于存储每一位计算出来的二进制数*/
ArrayList<Integer> numArray = new ArrayList<Integer>();
/**
* 计算每一位二进制数
*/
while(true){
numArray.add( num % 2 );
if(num==0) break;
num = num / 2;
}
/**倒序排列计算出的二进制数,并将其转换成字符形式连接在一起*/
for(int i=numArray.size()-1;i>=0;i--){
BinaString += String.valueOf(numArray.get(i));
}
return BinaString.substring(5);//以二进制字符串形式返回计算的结果
}
/**
* 此方法用于显示信息
*/
public void display(){
/**定义一个十进制数*/
int num10;
System.out.print("请输入要转换的十进制数:");
/**从键盘输入*/
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
String str = br.readLine();//读取一个文本行
num10 = Integer.parseInt(str);//转换成 int 型并赋值给 num10
System.out.println("十进制为:" + num10);
/**调用 toBinaString 方法转换成二进制*/
String num2 =toBinaString(num10);
System.out.print("转换成二进制为:" + num2); } catch (IOException e) {
/**抛出异常*/
System.out.println(e);
}
}
/**
* 程序的唯一入口点 main 方法
* @param args 传递至 main 的参数
*/
public static void main(String[] args) {
ToBinaryString newNum = new ToBinaryString(); newNum.display();
}
}
一下代码没测试过,有问题自己调试吧
public class StackBinary {
public static void main(String[] args) {
try {
Stack stack = new Stack();
Scanner scanner = new Scanner(System.in);
System.out.print("input an positive integer:");
int num = scanner.nextInt();
//use stack to convert num to binary
while (num>=2) {
stack.push(""+num%2);
num >= 1; // num /= 2;也可以
}
stack.push(num); //print result
System.out.print("result is: ");
while (statck.size()>0) {
System.out.print(statck.pop());
}
System.out.println(); } catch (Throwable e) {
e.printStackTrace();
}
}
}
JAVA新增的特性:泛型数组列表
public class DecimalistToBinary
{
public static void main(String[]args)
{
if(0==args.length)
{
System.out.println("您没有输入正整数(int类型)");
System.exit(0);//从用户的角度来考虑,这里不应该退出,应该给用户
//一个重新输入的机会.但为了简化,这里直接退出了
}
try
{
int num = Integer.parseInt(args[0]);
if(num<0)
{
System.out.println("请输入正整数");
System.exit(0);//同前
}
DToB(num);
}
catch(Throwable e)
{
e.printStackTrace();
}
}
public static void DToB(int param)
{
Stack aStack = new Stack();
while(0 != param)
{
int i = param%2;
aStack.push(i);
param = param/2;
}
while(aStack.empty() != true)
{
System.out.print((int)aStack.pop());
}
System.out.println();
}
}
编译通过,没有什么问题。