1.二维数组中行列互换
数组的行列互换,大概实现以后功能
行列互换前: 123 456 789 行列互换后: 147 258 369
思路是利用
int arr2[][] = new int[arr.length][arr.length]; for (int i = 0; i < arr.length; i++) {// 调整数组行列数据 for (int j = 0; j < arr[i].length; j++) { arr2[i][j] = arr[j][i]; }
去实现数组互换(注意一点是print()功能是把数组元素输出,再通过println()换行)
详细代码
public class ArrayRowColumnSwap { // 创建类 public static void main(String[] args) { // 创建二维数组 int arr[][] = new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; System.out.println("行列互调前:"); // 输出二维数组 printArray(arr); int arr2[][] = new int[arr.length][arr.length]; for (int i = 0; i < arr.length; i++) {// 调整数组行列数据 for (int j = 0; j < arr[i].length; j++) { arr2[i][j] = arr[j][i]; } } System.out.println("行列互调后:"); // 输出行列互调后的二维数组 printArray(arr2); } /** * 遍历数组并输出数组的全部元素 */ private static void printArray(int[][] arr) { for (int i = 0; i < arr.length; i++) {// 遍历数组 for (int j = 0; j < arr.length; j++) { System.out.print(arr[i][j] + " ");// 不换行输出数组元素 } System.out.println(); //换行 } } }
————————————————————————————————————————————
2.按钮控件数组实现计算器界面
主要是通过 按钮数组 来管理界面中的所有按钮控件,减少代码量
把所有按钮控件看成一个数组主要通过以上这句来实现,简化了很多:
String[][] names = { { "1", "2", "3", "+" }, { "4", "5", "6", "-" }, { "7", "8", "9", "×" }, { ".", "0", "=", "÷" } }; JButton[][] buttons = new JButton[4][4]; for (int row = 0; row < names.length; row++) { for (int col = 0; col < names.length; col++) { buttons[row][col] = new JButton(names[row][col]); // 创建按钮对象
完整代码注释如下:
package com.lixiyu; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.UIManager; public class CalculatorButtonArray extends JFrame { private static final long serialVersionUID = 6626440733001287873L;//保持兼容性 private JTextField textField; public static void main(String args[]){ try{ UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");//外观 }catch(Throwable e){ e.printStackTrace(); } CalculatorButtonArray frame = new CalculatorButtonArray(); frame.setVisible(true);//设置窗体可见,默认时为不可见 } public CalculatorButtonArray() { super(); // 继承父类的构造方法 BorderLayout borderlayout=(BorderLayout) getContentPane().getLayout();//布局管理器那块,暂还不太懂 borderlayout.setHgap(20);//水平间隔 borderlayout.setVgap(20);//竖向间隔 setTitle("按钮数组实现计算机简易功能界面(test1)"); setBounds(100,100,290,282);//设置窗体的显示位置及大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认窗体关闭方式 textField=new JTextField(); textField.setHorizontalAlignment(SwingConstants.TRAILING); textField.setPreferredSize(new Dimension(12, 50)); getContentPane().add(textField, BorderLayout.NORTH); textField.setColumns(10); final GridLayout gridLayout = new GridLayout(4, 0); // 创建网格布局管理器对象 gridLayout.setHgap(5); // 设置组件的水平间距 gridLayout.setVgap(5); // 设置组件的垂直间距 JPanel panel = new JPanel(); // 获得容器对象 panel.setLayout(gridLayout); // 设置容器采用网格布局管理器 getContentPane().add(panel, BorderLayout.CENTER); String[][] names = { { "1", "2", "3", "+" }, { "4", "5", "6", "-" }, { "7", "8", "9", "×" }, { ".", "0", "=", "÷" } }; JButton[][] buttons = new JButton[4][4]; for (int row = 0; row < names.length; row++) { for (int col = 0; col < names.length; col++) { buttons[row][col] = new JButton(names[row][col]); // 创建按钮对象 buttons[row][col].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JButton button = (JButton) e.getSource(); String text = textField.getText(); textField.setText(text + button.getText()); } }); panel.add(buttons[row][col]); // 将按钮添加到面板中 } } } }
目前没有加入运算功能,所以只是一个简单的空壳,主要为了体现数组的实际应用。
所以还需要继续学习去掌握更多的知识才能让它真正地跑起来。