编写一个java/swing程序,它可以执行十进制到二进制和二进制到十进制转换。 230

求问。。编写一个java/swing程序,它可以执行十进制到二进制和二进制到十进制转换。如图框架的上半部分允许用户输入一个十进制数。当按下“转换”按钮时,将显示二进制等价... 求问。。编写一个java/swing程序,它可以执行十进制到二进制和二进制到十进制转换。如图框架的上半部分允许用户输入一个十进制数。当按下“转换”按钮时,将显示二进制等价数。框架的下半部分从二进制转换为十进制。您的程序需要在0-255范围内处理数字,如果输入的值超出该范围,则提供适当的反馈。对于转换,您需要为number/base转换编写自己的方法(例如,不要使用可用的内置函数……自己写)。您的框架应该与以下内容类似:
public static boolean checkTen(Integer num){
if(num<0){
System.out.println("数字小于0,不符要求,请重新输入:");
Integer in=Integer.valueOf(new Scanner(System.in).nextLine());
checkTen(in);
}
return true;
}

public static boolean checkBinary(String binary){
for(int i=0;i<binary.length();i++){
char in=binary.charAt(i);
if(!(in=='0' || in=='1')){
System.out.println("二进制种不能出现0和1以外的数字,请重新输入:");
String cin=new Scanner(System.in).nextLine();
checkBinary(cin);
}
}
return true;
}

public static void main(String[] args) {

System.out.println("请输入一个十进制数:");
String in=new Scanner(System.in).nextLine();
Integer num =Integer.valueOf(in);
if(checkTen(num)){
System.out.println("转换为二进制:"+Integer.toBinaryString(num));
}
System.out.println("请输入一个二进制数字:");
String binary=new Scanner(System.in).nextLine();
if(checkBinary(binary)){
System.out.println("转换为十进制:"+Integer.valueOf(binary, 2).toString());
}
}
展开
 我来答
小龙5213344
推荐于2018-06-07 · TA获得超过221个赞
知道小有建树答主
回答量:348
采纳率:42%
帮助的人:60.5万
展开全部

给你写好了  懒得下swing控件  手写了一个  临时写的有点乱  

十转二用内置函数  二转十是自己写的过程  你也可以仿照我的写法把十转二改成过程

package erjinzhi;

import java.awt.*;
import java.awt.event.*;


public class erjinzhi_test extends Frame implements ActionListener{
Button tentotwo;
Button twototen;
Label l1;
Label l2;
Label l3;
Label l4;
Label l5;
TextField ten;
TextField two;
TextField ten1;
TextField two1;
Panel shang;
Panel zhong;
Panel xia;
Panel shang1;
Panel shang2;
Panel shang3;
Panel xia1;
Panel xia2;
Panel xia3;
public erjinzhi_test(){
tentotwo = new Button("十进制转二进制");
twototen = new Button("二进制转十进制");
ten = new TextField();
two = new TextField();
ten1 = new TextField();
two1 = new TextField();
l1 = new Label("十进制");
l2 = new Label("二进制");
l3 = new Label("进制转换工具");
l4 = new Label("十进制");
l5 = new Label("二进制");
shang = new Panel(new GridLayout(3,1));
shang1 = new Panel(new GridLayout(1,2));
shang1.add(l1);
shang1.add(ten);
shang.add(shang1);
shang3 = new Panel();
shang3.add(tentotwo);
shang.add(shang3);
shang2 = new Panel(new GridLayout(1,2));
shang2.add(l2);
shang2.add(two);
shang.add(shang2);

this.add(shang,BorderLayout.NORTH);

zhong = new Panel();
zhong.add(l3);
this.add(zhong,BorderLayout.CENTER);

xia = new Panel(new GridLayout(3,1));
xia1 = new Panel(new GridLayout(1,2));
xia1.add(l5);
xia1.add(two1);
xia.add(xia1);
xia3 = new Panel();
xia3.add(twototen);
xia.add(xia3);
xia2 = new Panel(new GridLayout(1,2));
xia2.add(l4);
xia2.add(ten1);
xia.add(xia2);

this.add(xia,BorderLayout.SOUTH);

this.setResizable(false);
this.setSize(280, 260);
this.setLocation(350, 100);
this.setTitle("进制转换工具");
this.setVisible(true);
tentotwo.addActionListener(this);
twototen.addActionListener(this);
}

public static void main(String[] args) {
new erjinzhi_test();
}

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==tentotwo){
int number =Integer.parseInt(ten.getText());
two.setText(Integer.toBinaryString(number));
}
if(e.getSource()==twototen){
String str = two1.getText();
String st[] = new String[str.length()];
st = str.split("");
int len =str.length();
int sum=0;
int t=1;
for(int i=len;i>=1;i--){
int s =Integer.parseInt(st[i])*t;
t=t*2;
sum=s+sum;
}
String summ=sum+"";
ten1.setText(summ);
}
}
}
追问
麻烦您能再整理一下么,我不太会,这个程序后半截运行不出来,还有窗口无法关闭,我在问题里加了一段代码是互相转换的,能帮忙按题意改一下吗。谢谢了。
追答
你的是用内置函数,你题目不是说不可以用内置函数吗?我还特意写了个过程,要是用内置函数那就太简单了。 你还要不要改,改就回复一下,不好意思周末没上网。
窗口无法关闭是因为没写右上角的关闭按钮,自己添加一下,一句代码的事。
DoramiHe
2018-06-06 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25334 获赞数:59538
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部
作如下修改 即可

import javax.swing.JOptionPane;

public class test01 {
public static void main(String sgs[]) {
String num = JOptionPane.showInputDialog("请输入要转换的数字:");
int number = Integer.parseInt(num);

System.out.println("该数的二进制数值为:");
int sum;

String result = "";
for (int i = number; i >= 1; i /= 2) {

if (i % 2 == 0) {
sum = 0;
} else {
sum = 1;
}
result = sum + result;

}
System.out.print(result);

}
追问
我在问题里加了一段代码是互相转换的,能帮忙按题意改一下吗。谢谢了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
随缘更新的黄先生
2018-06-05 · TA获得超过333个赞
知道答主
回答量:99
采纳率:60%
帮助的人:30.8万
展开全部
前几天用C#做了个类似的项目,不过我是转16进制的,有个convert这个转,你试试看java有没有
string b = 25;
string a =Convert.ToString(b, 16);
Console.WriteLine(+a);
更多追问追答
追问
看样子是不能直接使用,而且java里不能string b = 25, 只能int
追答
大致是这么写,int什么都可以的,只要你有convert。你试试int吧,我也没记得具体怎么写,自己多琢磨下就OK了。记得采纳哦
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
grace23450
2018-06-05 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7081
采纳率:77%
帮助的人:2314万
展开全部
你这个作业要求是翻译过来的,看着这么别扭
更多追问追答
追问
是的
追答
你在国外吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式