㈠ java中,用布局器實現計算器界面 並實現加減乘除等功能,怎樣編程
http://wenku..com/view/5cfcb42d2af90242a895e5f6.html
㈡ java編寫程序:創建一個 計算器 的 界面,包含 0-9 個 數字 , A-F個字母,採用 GridLayout布局
importjava.awt.*;
importjavax.swing.*;
{
publicMyCalculator(){
Stringss1="0123456789ABCDEF";
String[]ss2={"+","-","*","/","√ ̄","aⁿ","CE","="};//有些字元不在GBK中,所以文胡鬧本使用了UTF-8編碼。如果要用GBK編碼,就把字元修改成漢字,比如平方根,乘方
JPaneljp0;//存放顯示的文本框
JPaneljp1;//存放0~9A~F
JPaneljp2;//存放運算符
//jp0
jp0=newJPanel();
JTextFieldjtf=newJTextField(16);
jtf.setText("0");
jtf.setHorizontalAlignment(JTextField.RIGHT);//按照慣例,計算器的數字顯示在右側
jtf.setEditable(false);//按照慣例,計算器顯示結果的文本框不許編輯
jp0.add(jtf);
JButtonjb;//按鈕
//jp1
jp1=newJPanel(newGridLayout(4,4,3,3));
for(inti=0;i<ss1.length();i++){
jb=newJButton(ss1.charAt(i)+"");
jp1.add(jb);
}
//jp2
jp2=newJPanel(newGridLayout(3,3,3,3));
for(inti=0;i<ss2.length;i++){
jb=newJButton(ss2[i]);
jb.setForeground(Color.BLUE);//為了突出這些運算符,把顏色調整成藍色
jp2.add(jb);
}
add(jp0);
add(jp1);
add(jp2);
setLayout(newFlowLayout());//把JFrame設置成流升派式布局
setTitle("計算器");//設置窗口標題
setSize(220,285);//設置窗口大小
setResizable(false);//設置窗口不許縮放,因為流式布局,縮放會導致布局變化
setLocationRelativeTo(null);//設置窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//設置點擊關閉退出jvm虛擬機
setVisible(true);//設置窗口可見
}
publicstaticvoidmain(String[]args)吵做賀{
newMyCalculator();//創建窗口
}
}
㈢ 急求!!!如何用java程序代碼實現計算器界面
packagejisuanqi_new;
importjava.awt.*;
importjava.awt.event.*;
publicclassJiSuanQi_newimplementsActionListener
{
Panelp1;//聲明面板p1
TextFieldt1;//聲明文本行t1
String[]label={"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};//聲明標簽數組label1存放按鈕上的標簽
Button[]b;//聲明按鈕數組存放16個按鈕
privateinti;//聲明i以備後用
privateStringop1="0";//運算數備用
privateStringoperator="+";//運算符備用
privatebooleanappend=false;//備用
publicJiSuanQi_new()//構造方法
{
t1=newTextField();//初始化文本行t1
b=newButton[label.length];//初始化按鈕數組b
p1=newPanel();//初始化面板p1
p1.setLayout(newGridLayout(4,4,4,4));//使面板選擇網格布局管理器以備儲存16個按鈕(4行4列畝旁仔)
for(inti=0;i<b.length;i++)//利用for循環把標簽放在按鈕上,使每個按鈕添加事件監聽器,在面板p1上添加上16個按鈕
{
b[i]=newButton(label[i]);//把標簽依次放在16個按鈕上
b[i].addActionListener(this);//使每個按鈕添加動作事件監聽器
p1.add(b[i]);//分別將按鈕添加到面板p1上
}
Framef=newFrame("計算器1.0");//初始化窗口f,起名字計算器1.0
f.setLayout(newBorderLayout());//為窗口選擇邊界布局管理器
f.add(BorderLayout.NORTH,t1);//把文本行他添加到窗口的北部
f.add(BorderLayout.CENTER,p1);//把面吧p1添加到窗口的中間
f.addWindowListener(newWindowAdapter(){//給窗口f添加窗口事件監聽器
publicvoidwindowClosing(WindowEventeve){//運行窗口關閉方法
System.exit(0);//退出程序
啟兆}
});
f.setSize(250,250);//設置窗口大小
f.setLocation(200,200);
f.setVisible(true);//顯示窗口
}
publicstaticvoidmain(Stringargs[])
{
newJiSuanQi_new();//調用構造方法
}
publicvoidactionPerformed(ActionEventae)
{//按鈕被操作發生
迅汪Stringcomm=ae.getActionCommand();//返回與此動作相關的命令字元串,即:使用者第一次點擊的按鈕是什麼。
if("0123456789".indexOf(comm)!=-1)//如果相關命令字元串為0~9之間的數字則執行
{
if(append){
Stringtemp=t1.getText();//新數字
t1.setText(temp+comm);
}else{//因為此時append為false執行這個
t1.setText(comm);//將文本行t1設置為相關命令字元串(你按中的按鈕代碼)
append=true;//此時append=true若繼續按按鈕若繼續按數字的話1.第一次的按話不會改變2.非第一次按得話會覆蓋之前按得數字(即缺點:只能進行單個數字的計算)
}
}
elseif(("+-*/".indexOf(comm)!=-1))//如果相關命令字元串為+-*/之間的數字則執行
{
//保存
//t1.setText(comm);
op1=t1.getText();//把第一個數賦值給op1
operator=comm;//把命令字元串賦值給operator
append=false;//此時append為false即若繼續按按鈕若按數字的話將重復上面的動作,按符號的話將覆蓋之前的符號
}
elseif("=".equals(comm))//如果按的是=號,則按條件進行下面的運算
{
Stringop2=t1.getText();//op2第二個數
doubled1=Double.parseDouble(op1);
doubled2=Double.parseDouble(op2);
if(operator.equals("+")){
d1=d1+d2;
}elseif(operator.equals("-")){
d1=d1-d2;
}elseif(operator.equals("*")){
d1=d1*d2;
}else{
d1=d1/d2;
}
t1.setText(d1+"");//顯示計算結果
append=false;
}
elseif(".".equals(comm))//若是.號繼續按
{
Stringtemp=t1.getText();
if(temp.indexOf(".")==-1){
t1.setText(temp+".");
append=true;
}
}
}
}
㈣ java中,用布局器實現計算器界面 並實現加減乘除等功能,怎樣編程
java寫的,可行
package ex1;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTextField;
public class Calcutor extends JFrame {
private JTextField tf;
private JPanel panel1, panel2, panel3, panel4;
private JMenuBar myBar;
private JMenu menu1, menu2, menu3;
private JMenuItem editItem1, editItem2, help1, help2, help3;
private JRadioButtonMenuItem seeItem1, seeItem2;//單選框
private JCheckBoxMenuItem seeItem3;//復選框
private ButtonGroup bgb;
private String back;
private boolean IfResult = true, flag = false;
private String oper = "=";
private double result = 0;
private Num numActionListener;
private DecimalFormat df;
public Calcutor(){
super("科學計拿告猛算器");//設置標題欄
df = new DecimalFormat("#.####");//保留四位小數
this.setLayout(new BorderLayout(10, 5));
panel1 = new JPanel(new GridLayout(1, 3, 10, 10));
panel2 = new JPanel(new GridLayout(5, 6, 5, 5));//5行6列
panel3 = new JPanel(new GridLayout(5, 1, 5, 5));
panel4 = new JPanel(new BorderLayout(5, 5));
/**
* 菜單欄
*/
myBar = new JMenuBar();
menu1 = new JMenu("編輯(E)");
menu2 = new JMenu("查看(V)");
menu3 = new JMenu("幫助(H)");
menu1.setFont(new Font("宋體", Font.PLAIN, 12));
menu2.setFont(new Font("宋體", Font.PLAIN, 12));
menu3.setFont(new Font("宋體友大", Font.PLAIN, 12));
/**
* 編輯欄
*/
editItem1 = new JMenuItem("復制(C) Ctrl+C");
editItem2 = new JMenuItem("粘消橋貼(P) Ctrl+V");
editItem1.setFont(new Font("宋體",Font.PLAIN,12));
editItem2.setFont(new Font("宋體",Font.PLAIN,12));
/**
* 查看欄
*/
seeItem1 = new JRadioButtonMenuItem("科學型(T)");
seeItem2 = new JRadioButtonMenuItem("標准型(S)");
seeItem3 = new JCheckBoxMenuItem("數字分組(I)");
seeItem1.setFont(new Font("宋體",Font.PLAIN,12));
seeItem2.setFont(new Font("宋體",Font.PLAIN,12));
seeItem3.setFont(new Font("宋體",Font.PLAIN,12));
/**
* 幫助欄
*/
help1 = new JMenuItem("幫助主題(H)");
help2 = new JMenuItem("關於計算器(A)");
help1.setFont(new Font("宋體",Font.PLAIN,12));
help2.setFont(new Font("宋體",Font.PLAIN,12));
bgb = new ButtonGroup();//選項組
menu1.add(editItem1);
menu1.add(editItem2);
menu2.add(seeItem1);
menu2.add(seeItem2);
menu2.addSeparator();//添加一條分割線
menu2.add(seeItem3);
menu3.add(help1);
menu3.addSeparator();//添加一條分割線
menu3.add(help2);
myBar.add(menu1);
myBar.add(menu2);
myBar.add(menu3);
this.setJMenuBar(myBar);
numActionListener = new Num();//實現數字監聽
/**
* 文本域,即為計算器的屏幕顯示區域
*/
tf = new JTextField();
tf.setEditable(false);//文本區域不可編輯
tf.setBackground(Color.white);//文本區域的背景色
tf.setHorizontalAlignment(JTextField.RIGHT);//文字右對齊
tf.setText("0");
tf.setBorder(BorderFactory.createLoweredBevelBorder());
init();//對計算器進行初始化
}
/**
* 初始化操作
* 添加按鈕
*/
private void init(){
addButton(panel1, "Backspace", new Clear(), Color.red);
addButton(panel1, "CE", new Clear(), Color.red);
addButton(panel1, "C", new Clear(), Color.red);
addButton(panel2, "1/x", new Signs(), Color.magenta);
addButton(panel2, "log", new Signs(), Color.magenta);
addButton(panel2, "7", numActionListener, Color.blue);
addButton(panel2, "8", numActionListener, Color.blue);
addButton(panel2, "9", numActionListener, Color.blue);
addButton(panel2, "÷", new Signs(), Color.red);
addButton(panel2, "n!", new Signs(), Color.magenta);
addButton(panel2, "sqrt", new Signs(), Color.magenta);
addButton(panel2, "4", numActionListener, Color.blue);
addButton(panel2, "5", numActionListener, Color.blue);
addButton(panel2, "6", numActionListener, Color.blue);
addButton(panel2, "×", new Signs(), Color.red);
addButton(panel2, "sin", new Signs(), Color.magenta);
addButton(panel2, "x^2", new Signs(), Color.magenta);
addButton(panel2, "1", numActionListener, Color.blue);
addButton(panel2, "2", numActionListener, Color.blue);
addButton(panel2, "3", numActionListener, Color.blue);
addButton(panel2, "-", new Signs(), Color.red);
addButton(panel2, "cos", new Signs(), Color.magenta);
addButton(panel2, "x^3", new Signs(), Color.magenta);
addButton(panel2, "0", numActionListener, Color.blue);
addButton(panel2, "-/+", new Clear(), Color.blue);
addButton(panel2, ".", new Dot(), Color.blue);
addButton(panel2, "+", new Signs(), Color.red);
addButton(panel2, "tan", new Signs(), Color.magenta);
addButton(panel2, "%", new Signs(), Color.magenta);
addButton(panel2, "π", numActionListener, Color.orange);
addButton(panel2, "e", numActionListener, Color.orange);
addButton(panel2, "′″", new Signs(), Color.orange);
addButton(panel2, "=", new Signs(), Color.red);
JButton btns = new JButton("計算器");
btns.setBorder(BorderFactory.createLoweredBevelBorder());
btns.setEnabled(false);//按鈕不可操作
btns.setPreferredSize(new Dimension(20, 20));
panel3.add(btns);//加入按鈕
addButton(panel3, "MC", null, Color.red);
addButton(panel3, "MR", null, Color.red);
addButton(panel3, "MS", null, Color.red);
addButton(panel3, "M+", null, Color.red);
panel4.add(panel1, BorderLayout.NORTH);
panel4.add(panel2, BorderLayout.CENTER);
this.add(tf, BorderLayout.NORTH);
this.add(panel3, BorderLayout.WEST);
this.add(panel4);
pack();
this.setResizable(false);//窗口不可改變大小
this.setLocation(300, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/**
* 統一設置按鈕的的使用方式
* @param panel
* @param name
* @param action
* @param color
*/
private void addButton(JPanel panel, String name, ActionListener action, Color color){
JButton bt = new JButton(name);
panel.add(bt);//在面板上增加按鈕
bt.setForeground(color);//設置前景(字體)顏色
bt.addActionListener(action);//增加監聽事件
}
/**
* 計算器的基礎操作(+ - × ÷)
* @param x
*/
private void getResult (double x){
if(oper == "+"){result += x;}
else if(oper == "-"){result -= x;}
else if(oper == "×"){result *= x;}
else if(oper == "÷"){result /= x;}
else if(oper == "="){result = x;}
tf.setText(df.format(result));
}
/**
* 運算符號的事件監聽
*/
class Signs implements ActionListener{
public void actionPerformed(ActionEvent e) {
/*
* 用ActionEvent對象的getActionCommand()方法
* 取得與引發事件對象相關的字元串
*/
String str = e.getActionCommand();
/* sqrt求平方根 */
if(str.equals("sqrt")){
double i = Double.parseDouble(tf.getText());
if(i>=0){
/*
* String.valueOf() 轉換為字元串
* df.format() 按要求保留四位小數
* Math.sqrt() 求算數平方根
*/
tf.setText(String.valueOf(df.format(Math.sqrt(i))));
}
else{
tf.setText("負數不能開平方根");
}
}
/* log求常用對數 */
else if(str.equals("log")){
double i = Double.parseDouble(tf.getText());
if(i>0){
tf.setText(String.valueOf(df.format(Math.log(i))));
}else{
tf.setText("負數不能求對數");
}
}
/* %求百分比 */
else if(str.equals("%")){
tf.setText(df.format(Double.parseDouble(tf.getText()) / 100));
}
/* 1/x求倒數 */
else if(str.equals("1/x")){
if(Double.parseDouble(tf.getText()) == 0){
tf.setText("除數不能為零");
}else{
tf.setText(df.format(1 / Double.parseDouble(tf.getText())));
}
}
/* sin求正弦函數 */
else if(str.equals("sin")){
double i = Double.parseDouble(tf.getText());
tf.setText(String.valueOf(df.format(Math.sin(i))));
}
/* cos求餘弦函數 */
else if(str.equals("cos")){
double i = Double.parseDouble(tf.getText());
tf.setText(String.valueOf(df.format(Math.cos(i))));
}
/* tan求正切函數 */
else if(str.equals("tan")){
double i = Double.parseDouble(tf.getText());
tf.setText(String.valueOf(df.format(Math.tan(i))));
}
/* n!求階乘 */
else if(str.equals("n!")){
double i = Double.parseDouble(tf.getText());
if((i%2==0)||(i%2==1))//判斷為整數放進行階乘操作
{
int j = (int)i;//強制類型轉換
int result=1;
for(int k=1;k<=j;k++)
result *= k;
tf.setText(String.valueOf(result));
}
else
{
tf.setText("無法進行階乘");
}
}
/* x^2求平方 */
else if(str.equals("x^2")){
double i = Double.parseDouble(tf.getText());
tf.setText(String.valueOf(df.format(i*i)));
}
/* x^3求立方 */
else if(str.equals("x^3")){
double i = Double.parseDouble(tf.getText());
tf.setText(String.valueOf(df.format(i*i*i)));
}
/* ′″角度轉換 */
/**
* 將角度值轉換成弧度值,方便三角函數的計算
*/
else if(str.equals("′″")){
double i = Double.parseDouble(tf.getText());
tf.setText(String.valueOf(i/180*Math.PI));
}
else{
if(flag){
IfResult = false;
}
if(IfResult){
oper = str;
}else{
getResult(Double.parseDouble(tf.getText()));
oper = str;
IfResult = true;
}
}
}
}
/**
* 清除按鈕的事件監聽
*/
class Clear implements ActionListener{
public void actionPerformed(ActionEvent e) {
/*
* 用ActionEvent對象的getActionCommand()方法
* 取得與引發事件對象相關的字元串
*/
String str = e.getActionCommand();
if(str == "C"){
tf.setText("0");
IfResult = true;
result = 0;
}else if(str == "-/+"){
double i = 0 - Double.parseDouble(tf.getText().trim());
tf.setText(df.format(i));
}else if(str == "Backspace"){
if(Double.parseDouble(tf.getText()) > 0){
if(tf.getText().length() > 1){
tf.setText(tf.getText().substring(0, tf.getText().length() - 1));
//使用退格刪除最後一位字元
}else{
tf.setText("0");
IfResult = true;
}
}else{
if(tf.getText().length() > 2){
tf.setText(tf.getText().substring(0, tf.getText().length() - 1));
}else{
tf.setText("0");
IfResult = true;
}
}
}else if(str == "CE"){
tf.setText("0");
IfResult = true;
}
}
}
/**
* 數字輸入的事件監聽
*/
class Num implements ActionListener{
public void actionPerformed(ActionEvent e) {
String str = e.getActionCommand();
if(IfResult){
tf.setText("");
IfResult = false;
}
if(str=="π")
{
tf.setText(String.valueOf(Math.PI));
}
else if(str=="e")
{
tf.setText(String.valueOf(Math.E));
}
else{
tf.setText(tf.getText().trim() + str);
if(tf.getText().equals("0")){
tf.setText("0");
IfResult = true;
flag = true;
}
}
}
}
/**
* 小數點的事件監聽
*/
class Dot implements ActionListener{
public void actionPerformed(ActionEvent e) {
IfResult = false;
if(tf.getText().trim().indexOf(".") == -1){
tf.setText(tf.getText() + ".");
}
}
}
/**
* main方法
*/
public static void main(String[] args) {
new Calcutor().setVisible(true);
}
}
㈤ java、編寫一個簡易計算器界面,如圖1所示,不需要添加任何事件。
1、新建一個易語言的Windows窗口程序。
2、舉一個簡單的例子,做一個加法計算器。添旁彎加三個編輯框、兩個文本和一個按鈕,界面如下:
3、此時會用到兩個局部變數,定義為變數1、變數2,按CTRL+L彈出局部變數表(或點菜單欄上的插入,選擇局部變數),如圖。
4、點擊變數名下面的框,輸入變數1,點擊類型,按下空格鍵,彈出如下菜單:
選擇早啟或小數型。同樣,添加變數2。
5、同樣,全局變數也一樣,只不過快捷鍵為CTRL+G,注意的是,要在窗口程序陸伍集裡面插入變數。
㈥ java 圖形界面設計製作計算器
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.text.NumberFormat;
public class JSQ extends JFrame implements ActionListener {
float i = 0;
JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel();
JPanel jp3 = new JPanel();
JButton bt1 = new JButton("+");
JButton bt2 = new JButton("-");
JButton bt3 = new JButton("*");
JButton bt4 = new JButton("/"爛廳帆);
JButton bt5 = new JButton("1");
JButton bt6 = new JButton("伏遲2");
JButton bt7 = new JButton("3");
JButton bt8 = new JButton("4");
JButton bt9 = new JButton("5");
JButton bt10 = new JButton("6"飢雹);
JButton bt11 = new JButton("7");
JButton bt12 = new JButton("8");
JButton bt13 = new JButton("9");
JButton bt14 = new JButton("0");
JButton bt15 = new JButton("=");
JButton bt16 = new JButton("C");
JLabel je = new JLabel("0");
public JSQ() {
super("計算器");
jp1.setBounds(50, 150, 300, 200);
jp1.setBackground(new Color(100, 100, 150));
this.add(jp1);
jp2.setBounds(50, 40, 300, 30);
jp2.setBackground(new Color(50, 100, 150));
this.add(jp2);
jp2.add(je);
jp3.setBounds(370, 200, 70, 70);
jp3.setBackground(new Color(100, 100, 150));
this.add(jp3);
jp1.add(bt1);
jp1.add(bt2);
jp1.add(bt3);
jp1.add(bt4);
jp1.add(bt5);
jp1.add(bt6);
jp1.add(bt7);
jp1.add(bt8);
jp1.add(bt9);
jp1.add(bt10);
jp1.add(bt11);
jp1.add(bt12);
jp1.add(bt13);
jp1.add(bt14);
jp1.add(bt15);
bt1.addActionListener(this);
bt2.addActionListener(this);
bt3.addActionListener(this);
bt4.addActionListener(this);
bt5.addActionListener(this);
bt6.addActionListener(this);
bt7.addActionListener(this);
bt8.addActionListener(this);
bt9.addActionListener(this);
bt10.addActionListener(this);
bt11.addActionListener(this);
bt12.addActionListener(this);
bt13.addActionListener(this);
bt14.addActionListener(this);
bt15.addActionListener(this);
bt16.addActionListener(this);
this.setLayout(null);
this.setSize(500, 400);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setVisible(true);
}
StringBuffer val = new StringBuffer();
double data = 0;
char op = '\0';
boolean isComp = false;
public void actionPerformed(ActionEvent e) {
JButton b = (JButton) e.getSource();
char c = b.getText().charAt(0);
if (Character.isDigit(c)) {
if (je.getText().equals("0")) {
if (c != '0') {
val.append(c);
setResult(val.toString());
}
} else {
if (isComp) {
val.delete(0, val.length());
val.append(c);
setResult(val.toString());
isComp = false;
} else {
if (!val.toString().equals("0")) {
val.append(c);
setResult(val.toString());
}
}
}
} else if (c == '+' || c == '-' || c == '*' || c == '/') {
if (op != '\0') {
isComp = compute();
op = '\0';
}
op = c;
if (val.length() == 0) {
data = 0;
} else {
data = Double.parseDouble(val.toString());
}
val.delete(0, val.length());
isComp = false;
} else if (c == '=') {
isComp = compute();
op = '\0';
}
}
private boolean compute() {
double data1 = 0;
if (val.length() == 0) {
data1 = 0;
} else {
data1 = Double.parseDouble(val.toString());
}
val.delete(0, val.length());
switch (op) {
case '+' :
val.append(data + data1);
break;
case '-' :
val.append(data - data1);
break;
case '*' :
val.append(data * data1);
break;
case '/' :
if (data1 == 0) {
val.append(0);
} else {
val.append(data / data1);
}
break;
}
setResult(val.toString());
return true;
}
private void setResult(String data) {
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(16);
je.setText(nf.format(Double.parseDouble(data)));
}
}
㈦ 下圖是用java圖形界面做的一個計算器界面,怎樣讓JButton中的字元全部顯示出來啊
按鈕太小了,顯示不出來的,漢字本身就很大,所以你遲沒乎可以嘗試換為英文字母來代替,如『確定』可以用E(Enter)代替,然後添加一個工具提示的效果,就是當滑鼠移到上面 的時候,可以顯示很粗具體的名稱,如滑鼠移動到E 按鈕上時,就會在旁邊出現一個提示框,顯示「確定」字樣,就像是提示該按鈕的用法,你用其他 的軟體事都察睜有體會吧。。。具碼悉體可以網上查查,好長時間沒寫過這樣的界面了。
順便在問一下:
你的計算器實現了哪些功能,就是簡單的計算嗎?如計算2+3*5, 先計算3*5,然後再+2 。
那可不可以計算一個表達式求值呢?比如之間輸入剛才的表達式,然後求值。這個不好實現,前一段時間我看到了他的演算法,其實我以前沒注意到,就是在《數據結構》那本書中有講到,在將堆棧時,表達式求值就是堆棧的一個應用,還有一個就是括弧匹配,這也是堆棧的應用,你可以自己好好的研究一下,這兩個應用的話用處還是蠻大的。
㈧ java加減乘除計算器界面編程
來源:Code Wizards HQ
智能觀 編譯
孩子想學編碼的話,有很多方法可以展開學習。可以讓他們學著構建視頻游戲、創建動畫、開發移動應用程序和搭建網站。不管孩子喜歡哪種形式,都有大量的編碼書供他們快速學起來!
但是,怎麼才能找到一本好的兒童編碼書呢?
沒經驗的孩子的編碼書,應該涵蓋基本內容。
翻翻適合初學者的書,看看裡面是否有加減乘除基本數學運算,仔細看看帶變數、if / then語句、循環和函數的章節。你不需要理解這些概念是怎麼工作的,只要看看書的標題里有沒有提這些,如果沒有,這本書不適合新手。
許多好的兒童編碼書只用一種語言。
好的兒童編碼書只側重一種語言,可以是Scratch、Javascript或Python。如果你不知道孩子應該學哪種語言,可以買兩三種不同語言的書。
好的兒童編碼書有很多照片和插圖。
對於那些第一次接觸代碼的孩子來說,視覺吸引力很重要。好的兒童編碼書每一頁上都有豐富多彩的插圖,充分吸引孩子的關注。
好的兒童編碼書提供有用的、可轉移的知識。
學一門特定的語言並不像理解基本的編碼概念那麼重要。寫代碼的人可以從任何語言開始學起,然後輕松地轉入其他語言。有些語言不太適合孩子,如C和C++,很多成年人都學不好。
因此,根據以上幾項挑選原則,我們推出一份教孩子編碼的書籍,涵蓋塊編程、編程基礎語言、Web開發、移動開發、游戲編程、機器人和物聯網等幾大類,並標出適合孩子學習的年齡段,可以說是史上最全的兒童編碼書籍匯總了!如果你正在苦惱怎麼給孩子選書,快收下這份開學禮物吧~
塊編程類
學齡前的兒童也可以學慣用塊編程語言編碼。塊語言是高度圖形化的,易於學習。Scratch是為孩子們設計的一種流行的塊語言。
1. Coding with Scratch Workbook
(用Scratch編碼)
作者:DK出版公司
適合年齡: 6-9歲
在短短40頁的篇幅里,讀者就能學會用Scratch做任何事,從解決簡單的數學問題到構建、分享游戲。每章都包含指導孩子們完成簡單編碼項目的分步說明。
2. Learn to Program with Scratch:A Visual Introction to Programming with Games, Art, Science, and Math
(學會用Scratch編程:游戲、藝術、科學和數學編程的可視化介紹)
作者:Majed Marji
適合年齡: 10歲及以上
這本將近300頁的書涵蓋了初學者需要了解的關於Scratch語言的所有內容。讀完這本書後,孩子們將會牢固掌握Scratch和適用於任何語言的編程思想。
3. Scratch for Kids For Dummies
(兒童Scratch傻瓜書)
作者:Derek Breen
適合年齡: 10-14歲
讀者將在構建16個項目中,學習變數、if / then語句、循環和基本編程邏輯。
4. The Official ScratchJr Book: Help Your Kids Learn to Code
(中文版:動手玩轉ScratchJr編程)
作者:Marina Umaschi Bers 、Mitchel Resnick
適合年齡: 5-9歲
對於那些還太小不能學習Scratch的孩子來說,Scratchr Jr是一種更簡單的塊編程語言。
5. MicroWorlds EX Books for Kids
(兒童MicroWorlds EX工具書)
作者:Steve Robson
適合年齡: 5-9歲
藉助MicroWorlds EX工具,孩子們通過圖形和文本來學習。他們沒有被一種純圖形語言和「固定」代碼所束縛,也不必100 %處理文本。
鏈接:
https://pan..com/s/1igfVJVV1UpBdIZvNzogv2Q
6. Coding for Kids For Dummies
(兒童編碼傻瓜書)
作者:Camille McCue
適合年齡: 10-14歲
書中指導孩子完成15個項目,包括繪畫、動畫和游戲,還帶領孩子們完成了創建計算機程序的過程,從構思到構建、測試。
編程基礎
盡管C++、Java和Python等語言之間存在著巨大的差異,但理解編碼基礎知識,孩子可以相對輕松地從一種語言遷移到另一種語言。
Python
7. Python for Kids
(適合孩子的Python學習)
作者:Jason R. Briggs
適合年齡: 10歲以上
這本書對孩子來說既全面又容易理解。內容適合小學生,但也適合許多成人學習者看。
鏈接:
https://pan..com/s/1GJUXzKUfVed3O-sfss3MDg
8. Coding Projects in Python
(Python編碼項目)
作者:DK出版公司
適合年齡: 9-12歲
不管孩子已經學了Scratch之類的塊語言,還是沒有做過任何編程,都可以在這本書里找到需要的一切來構建軟體。書後面的詞彙和參考部分對孩子來說很有幫助。
鏈接:
https://pan..com/s/1BJE0IgfeBc8uEHrdHAxuaw
9. Python in Easy Steps
(學習Python的簡單步驟)
作者:Mike McGrath
適合年齡:中學及以上
本書不是專門為孩子寫的,但它內容組織得很好,中學生,尤其是有一些Scratch或其他語言經驗的中學生,可以很容易地理解它。讀完本書,學生可以用Python構建簡單的網頁和編寫桌面應用程序。
10. Hello World! Computer Programming for Kids and Other Beginners
(中文版:父與子的編程之旅:與小卡特一起學Python)
作者:Warren Sande
適合年齡: 12歲以上
學習編碼時,大家編寫的第一個程序就是在屏幕上顯示「Hello World」。本書沿襲了這一傳統,並為新手提供構建任何類型有用軟體所需的必要技能。
鏈接:
https://pan..com/s/1tue23Fur36Q3l-8YoziJ1w
Java
Java是一種非常流行的語言,用於所有操作系統和Android設備。這也是高中計算機科學課程中最常見的語言。
11. Java Programming for Kids: Learn Java Step by Step and Build Your Own Interactive Calculator for Fun!
(面向兒童的Java編程:逐步學習Java,並構建自己的互動式計算器)
作者:R. Chandler Thompson
適合年齡: 13-17歲
這本書既有趣又簡單。青少年讀者可以通過Java編程語言,構建互動式計算器應用程序。
12. Java for Kids (and grown ups): Learn to Code and Create Your Own Projects with Java 8
(面向兒童和成年人的Java:學慣用Java 8編寫代碼並創建自己的項目)
作者:Nadia Ameziane Garcia
適合年齡: 10-12歲
這本書只介紹學習過程中每一步所需要的東西。每一章都建立在前文介紹的基礎上,孩子們可以在短時間內學會Java的基礎知識。
C++
這不是最容易學的語言,但精通C++的人會更了解計算機是如何工作的。
13. C++ Progamming In Easy Steps
(C++編程的簡單步驟)
作者:Mike McGrath
適合年齡:中學及以上
作者通過一系列簡單的課程介紹了C++,並提供大量專家提示,以幫助讀者獲得最佳編程實踐。這本書讓孩子們短時間內學會C++基礎知識,並可能沿用很多年。
14. C++ for Kids
(適合兒童的C++語言)
作者:Blaise Vanden-Heuvel、John C Vanden-Heuvel Sr.
適合年齡: 7-9歲
這本簡短多彩的書向孩子們展示了C++編程是如何工作的。示常式序各色各樣,這樣孩子們就能理解程序的各個部分實際上是做什麼的。
Web開發類
HTML和CSS
網頁用HTML構建,用CSS設計風格。這些不是真正的編程語言,但它們讓孩子接觸文本編輯器、構思想法,對日後探索Javascript或Python之類的語言很有用。
15. Build Your Own Website, a Comic Guide to HTML, CSS and WordPress
(建立你自己的網站,HTML、CSS和WordPress的漫畫指南)
作者:Nate Cooper、Kim Gee
適合年齡:中學及以上
在這本漫畫風格的網站搭建指南中,孩子們學習HTML標記語言,熟悉控制網頁樣式的CSS語言,了解內容管理系統WordPress。
鏈接:
https://pan..com/s/194OAJuxV47aUdHndpjzXhA
16. CoderDojo Nano: Building a Website: Create with Code
(用代碼搭建網站)
作者:Clyde Hatter、CoderDojo
適合年齡: 8-12歲
這本書只有96頁,引導孩子們完成建立網站的整個過程。孩子可以建立一個和書中例子完全一樣的網站,也可以試著建自己喜歡的網站。
17. Creating a Website: Design and Build Your First Site
(創建網站:設計和建立你的第一個網站)
作者:Greg Rickaby
適合年齡: 7-11歲
這本書為孩子設計網頁提供指南,從規劃網站的結構到添加使網站與眾不同的細節。同時提供了軟體工程師在現實世界中使用的許多技巧和操作過程。
JavaScript
許多程序員認為JavaScript是互聯網的未來,學習這種語言可以建立互動性強的、有用的網站。
18. Computer Coding with Javascript
(使用Javascript進行計算機編碼)
作者:DK出版公司
適合年齡: 8-12歲
從HTML、CSS轉到JavaScript可能容易暈,因為JavaScript更加復雜、強大。但這本書內容比較簡單,孩子們可以順利過渡。
19. Javascript for Kids: A Playful Introction to Programming
(面向兒童的JavaScript:有趣的編程入門)
作者:Nick Morgan
適合年齡: 10歲以上
本書從數組、變數類型討論到游戲編程。無論孩子想製作游戲、製作動畫還是使用虛擬現實,JavaScript都能讓他們把想法變成真實的程序。
鏈接:
https://pan..com/s/1JEs-oTMGwV2OgCcRdlfJEQ
20. Javascript for Kids For Dummies
(面向兒童的JavaScript傻瓜書)
作者:Chris Minnick、Eva Holland
適合年齡: 10-13歲
如果你有興趣讀編程書,幫孩子學習編碼,試試這本。這本書遠遠超出基本內容,方便讀者構建任何能想到的Web項目。
鏈接:
https://pan..com/s/1JfXJvj0xPSdGGw-Iwr_IJA
21. Get Coding! Learn HTML, CSS, Javascript & Build a Website, App & Game
(編碼!學習HTML,CSS,Javascript ;建立一個網站,應用程序和游戲)
作者:Young Rewired State
適合年齡: 9-12歲
這本書中的課程是以任務形式呈現的,教導孩子構建網站、應用程序和游戲。他們還會了解不同類型的編程語言以及每種語言的優點。
移動開發
安卓應用
App Inventor是一個完全在線開發的Android編程環境,具有類似Scratch的塊編程界面。它簡化了移動開發過程,是向孩子們介紹Android編程的理想方式。
22. Building a Mobile App
(構建移動應用程序)
作者:Guthals
適合年齡: 7-11歲
讀這本書的孩子不僅學習編碼,還學習規劃、開發自己的定製應用。本書提供了專業人員使用的應用程序開發的內容,包括原型製作和創建應用程序框架,對熱愛移動開發的孩子來說特別有價值。
23. Hello App Inventor
(你好,App Inventor)
作者:Paula Beer、Carl Simmons
適合年齡: 9歲以上
使用App Inventor構建的應用可以利用許多智能手機功能,如運動感測器、GPS和相機。本書通過30個示例項目向讀者展示了如何利用這些功能。
鏈接:
https://pan..com/s/1ybVo8tEVE5TE3T8F4wnaqw
iOS應用
為了構建蘋果產品應用程序,開發人員使用了一種叫Swift的語言。創建這種語言時,軟體工程師想讓沒經驗的人容易學習。對於從未編程的孩子來說,這是一個很好的選擇。
24. Coding iPhone Apps for Kids
(適合孩子的iPhone應用程序編碼)
作者:Gloria Winquist、Matt McCarthy
適合年齡: 10歲以上
本書介紹了Swift語言和編碼基礎,並讓孩子們構建兩個真正的應用程序:一個生日跟蹤器和一個滑板游戲。
25. Hello Swift
(你好,Swift)
作者: Tanmay Bakshi、Lynn Beighley
適合年齡: 9歲以上
Tanmay Bakshi可以說是我們的老朋友了,智能觀從去年開始就報道他的故事。他4歲編碼,9歲就發布第一個應用程序。通過他的書,讀者也會構建能在iOS應用商店上發布的應用程序。
如果還有人對他不了解,可以看看我們往期的報道。附傳送門:
13歲天才少年在IBM掀起一場人工智慧風暴
IBM少年工程師說:人工智慧的下一個前沿是心理健康
游戲編程
Scratch游戲編程
26. Coding Games in Scratch
(用Scratch編碼游戲)
作者:Jon Woodcock
適合年齡: 8-12歲
這本書讓孩子在瀏覽器中製作自己的游戲。
27. Code Your Own Games: 20 Games to Create with Scratch
(編碼自己的游戲: 用Scratch創建20個游戲)
作者: Max Wainewright
適合年齡: 6-11歲
這本書分5個層次遞進,20個游戲項目讓孩子們熟悉編碼和游戲開發的原理。每款游戲都鍛煉了孩子們的能力,比如控制玩家互動、在屏幕上設置對象動畫、添加聲音。
28. Star Wars Coding Projects
(星球大戰編碼項目)
作者:Jon Woodcock、Kiki Prottsman
適合年齡: 8-12歲
喜歡《星球大戰》的孩子可以通過C3PO、R2D2和其他角色學習編碼。讀者不需要任何編程經驗就可以看這本書。
Python游戲編程
29. Mission Python
(Python任務)
作者:Sean McManus
適合年齡: 10歲以上
雖然對於10歲的孩子來說,這本書有點簡單了,但它探索了Python游戲編程的深度。書從Python Essentials插件開始,逐漸深入更高級的概念,如音頻文件處理和3D圖形。
30. Invent Your Own Computer Games with Python
(中文版:Python編程快速上手——讓繁瑣工作自動化)
作者:Al Sweigart
適合年齡: 10歲以上
這本書通過對Hangman和Tic-Tac-Toe等幾款流行游戲進行詳細解釋來教授編程。
鏈接:
https://pan..com/s/1ncZTTrIPlBzA30e_BNjDAA
我的世界
31. Learn to Program with Minecraft
(用我的世界學項目)
作者:Craig Richardson
適合年齡: 10歲以上
《我的世界》是一款受歡迎的3D游戲,孩子們可以在虛擬世界中探索、建造城堡等。本書介紹了如何使用Python編程擴展《我的世界》。
鏈接:
https://pan..com/s/13_FMKoqlMF8P1uu4gaqRNQ
32. Minecraft Modding for Kids For Dummies
(用我的世界教孩子建模的傻瓜書)
作者:Guthals、Stephen Foster、 Lindsey Handley
適合年齡: 10-13歲
通過9個JavaScript項目,孩子們從《我的世界》里的「玩家」化身為 「建模師」。讀者要有玩《我的世界》的經驗,但不需要以前學過編碼。
機器人和物聯網
Arino
Arino是一台微型計算機,可以用感測器、LED燈和馬達等小硬體控制各種電路。學習Arino不僅僅意味著學習編碼;它包括設計和建造真實世界的項目。
33. Adventures in Arino
(Arino歷險記)
作者:Becky Stewart
適合年齡: 11-15歲
喜歡機械和工程的孩子會喜歡本書中的項目。孩子們了解Arino,然後上手一些簡單的項目,比如讓LED燈亮起來。
鏈接:
https://pan..com/s/1JFopfxxfONYCGAKMM28yaQ
34. Sylvia』s Super-Awesome Project Book: Super-Simple Arino
(Sylvia的超棒項目書:超級簡單的Arino)
作者:Sylvia "Super-Awesome" Todd
適合年齡: 8-12歲
Sylvia介紹了如何建立Arino項目來控制燈光和製作音樂等。這些項目不是復制代碼,羅列事物,而是對事物如何工作以及為什麼工作進行了詳細解釋。
樹莓派
你可以把樹莓派(Raspberry Pi)當成Arino的升級版。兩台計算機的尺寸差不多,但是樹莓派的操作系統更接近筆記本電腦。
35. Raspberry Pi Projects Workbook
(樹莓派項目工作簿)
作者:DK出版公司
適合年齡: 7-12歲
孩子們可要通過這本書製作游戲,製作音樂,製作動畫,學習Scratch、Python和Raspberry Pi。
鏈接:
https://pan..com/s/1AzZ-ZubG41zOXUh2IFRA
36. Adventures in Raspberry Pi
(樹莓派歷險記)
作者:Carrie Anne Philbin
適合年齡: 11-15歲
本書介紹的9個項目讓孩子們快速上手樹莓派,涵蓋的概念編程有基礎、游戲編程、圖形創建等。
鏈接:
https://pan..com/s/1Ub365kwYczlN0E5k6b-57g
樂高機器人
樂高生產了幾個套件,包括機器人滾動、旋轉甚至攀爬的所有必要部件。他們也有自己的語言,孩子們用這些語言來創作。
37. The Art of Lego Mindstorms EV3 Programming
(樂高頭腦風暴EV3編程的藝術)
作者:Terry Griffin
適合年齡: 10歲以上
本書教孩子們在EV3頭腦風暴編程環境中,控制自己的機器人。他們學習如何建造樂高機器人並用代碼控制它。
38. Building Robots with Lego Mindstorms
(用樂高頭腦風暴套件製造機器人)
作者: Mario Ferrari、Giulio Ferrari、Ralph Hempel
適合年齡: 10歲以上
在本書中,孩子們使用電子電路和感測器,以及樂高頭腦風暴套件,學習製造機器人。書中有大量關於齒輪、馬達、氣動和其他工程概念的信息,對於嚴肅的機器人愛好者來說很重要。
適合學齡前兒童的編碼書
為低齡兒童設計的編碼書,幫助兒童建立對計算機程序的模式、顏色和其他基本要素的認知。
39. Baby Loves Coding
(寶貝喜歡編碼)
作者:Ruth Spiro
適合年齡:學前及以上
因為是給很小的孩子看的,書中沒有提供任何明確的編碼指導。它介紹了解決問題的方法,以及優秀程序員需要有的想法。
40. Learn to code: Robot Train』s Surprise Birthday Party (Volume 1)
(學會編碼:機器人火車的驚喜生日聚會I)
作者:by Jen Chiou
適合年齡:學前及以上
孩子在本書中了解編碼的先決條件,如決策和邏輯。通過觸摸書上像按鈕的圖片,孩子們幫助一輛虛構的機器人火車向生日派對運送用品,從而了解編碼邏輯是如何工作的。
41. HTML for Babies
(適合嬰兒的超文本標記語言)
作者:Sterling Children's
適合年齡: 3-5歲
HTML是一種簡單的標記語言,不需要復雜的邏輯,3-5歲的孩子可以通過本書,學會識別與網路編程相關的符號和顏色。
42. JavaScript for Babies
(適合嬰兒的JavaScript語言)
作者:Sterling Children's
適合年齡: 3-5歲
這本書讓孩子們了解JavaScript的一些基本結構和數據類型。
有趣的青少年編碼書
讓青少年讀一本編程類的書可能很困難,所以以下書籍通過游戲開發和其他有趣的項目,幫助青少年學習。
43. Computer Programming for Teens
(適合青少年的電腦編程)
作者:Mary E. Farrell
適合年齡:青少年
沒有編碼經驗的孩子和那些不知道學什麼語言的孩子,是本書的目標受眾。書中有一些C++、Python和Web編程語言的例子,孩子們將會找到最適合自己的編碼項目。
44. Game Programming for Teens
(適合青少年的游戲編程)
作者:Maneesh Sethi
適合年齡:青少年
本書介紹了一種名為BlitzMax的游戲專用語言,它使孩子們能在所有平台( Windows、Mac、Linux )構建游戲。
鏈接:
https://pan..com/s/1pe0gc_MlDdIeD3jp5YNE1w
適合女孩的編碼書,STEM入門
女孩可以通過編程提前接觸STEM。構建應用程序、開發游戲、編程機器人——這些活動為女孩們進入STEM領域奠定了堅實的基礎。
45. Women Who Launched the Computer Age
(開創計算機時代的女性)
作者:Laurie Calkhoven
適合年齡: 6-8歲
本書講述了6位在二戰期間為美國軍方從事秘密項目的天才女性。
46. Grace Hopper: Queen of Computer Code
(格雷斯·霍普:計算機代碼女王)
作者:Laurie Wallmark
適合年齡: 5歲以上
格雷斯·霍普是一位有創造力的計算機科學家和數學家,也是一位授勛的海軍軍官和總統自由勛章獲得者。孩子們會在她精彩的生活和成就中找到鼓勵。
47. Girls Who Code: Learn to Code and Change the World
(學會編碼並改變世界)
作者:Reshma Saujani
適合年齡: 10歲以上
Reshma Saujani是女孩編碼組織「Girls Who Code」的創始人,她在本書中介紹了電腦和編碼,以及在科技領域工作的女性的軼事。
培養兒童編碼興趣的通用讀物
編碼的孩子受益於問題解決、數學和決策能力。一些優秀的兒童計算機科學通用讀物側重於培養孩子對編碼的興趣。
48. Lauren Ipsum: A Story About Computer Science and Other Improbable Things
(勞倫·益普森:關於計算機科學和其他不可思議的故事)
作者:Carlos Bueno
適合年齡: 10歲以上
一個年輕的女孩需要找到回家的路,但要做到這一點,必須解決一個個難題……讀者不知不覺中,接觸到了編程邏輯、解決問題的技巧和其他計算機科學思想。
49. Once Upon an Algorithm
(從前有個演算法)
作者:Martin Erwig
適合年齡:中學及以上
演算法是解決問題的一組指令或過程。你可能覺得孩子們不太想看這個。但作者Martin Erwig通過類比、童話和電影引用,使演算法變得有趣。
原文鏈接:
http://www.codewizardshq.com/coding-books-for-kids/
—完—
擴展閱讀:
適合孩子學習編碼的7款工具套件
干貨|| 如何在線學習編碼?看看這 11個優秀的編程資源網站
教孩子編碼就夠了嗎?不!學校該培養的是計算思維
每個人都應該學習編碼嗎?吳恩達這樣回答……
如果學生編程能力勝於老師,編碼課該怎麼教?
親愛的朋友:
經常有讀者咨詢,有沒有適合孩子的編碼書推薦?
我們之前推薦過一些,但苦於無中文版,很多讀者找不到購買方式。
今天的推薦,內容比較全面,我們可愛的小編找遍了資源,將能找到電子版都找到,一並送給你。
其餘沒有資源的,網上也可以買到。
如果本文對你有幫助,別忘了轉發給你身邊的朋友,讓它幫助更多人。
祝安!
PS:為了方便與讀者探討,特意注冊了一個專用號。如果你也是我們的鐵桿讀者,想探討交流,可以加微信:znglmym。
智能觀 靈米
2018-9-12 於北京中關村
想知道AI加教育領域有哪些最新研究成果?
想要AI領域更多的干貨?
想了解更多專家的「智能觀」?
請前往:www.智能觀.com。
想交流溝通,請加負責人微信:znglmym
聲明:
編譯文章旨在幫助讀者了解行業新思想、新觀點及新動態,為原作者觀點,不代表智能觀觀點。
轉載智能觀原創文章,請聯系
智能觀小艾(微信號:zng2017618)!
關於我們
我們關注AI+教育。致力於提供高附加值的知識,以幫助每一位老師和我們的讀者不斷學習並提高技能。
我們努力讓發表的每一篇文章都具有最佳質量,以滿足讀者的需求。