
正文
Java向左移动的代码 java向左移动的代码怎么写
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Java怎样把数组的元素向左移动?比如把一个数组arr{12 34 45 56 67 78 }移动2次变得45 56 67 78 12 34
当然实现的方法是比较多的,这里给出一种:
//arr循环左移times次
function shiftArr(arr, times){
times = times%(arr.length);//考虑times大于等于length的情况
return arr.slice(times).concat(arr.slice(0, times));
//取出两个子数组然后连接
}
其他的思路有删除arr前若干个元素并添加到其末尾等(参考Array对象的方法)。
如有问题欢迎继续交流!
相关问答
Q1: java左移运算符的问题,一定给分!
1.左移运算符
左移运算符用“”表示,是将运算符左边的对象,向左移动运算符右边指定的位数,并且在低位补零。其实,向左移n 位,就相当于乘上2 的n 次方,例如下面的例子。
public class data17
{
public static void main(String[] args)
{
int a=2;
int b=2;
System.out.println("a 移位的结果是:"+(ab));
}
}
运行结果
a 移位的结果是:8
分析上面的程序段:
首先从本质上来分析,2 的二进制是00000010,它向左移动2 位,就变成了00001000,即8。如果从另一个角度来分析,它向左移动2 位,其实就是乘上2 的2 次方,结果还是8。
2.右移运算符
右移运算符用符号“”表示,是将运算符左边的对象向右移动运算符右边指定的位数,并且在高位补0,其实右移n 位,就相当于除上2 的n 次方。
public class data18
{
public static void main(String[] args)
{
int a=16;
int b=2;
System.out.println("a 移位的结果是:"+(ab));
}
}
运行结果
a 移位的结果是:4
分析上面的程序段:从本质上来分析,16 的二进制是00010000,它向右移动2 位,就变成了00000100,即4。如果从另一个角度来分析,它向右移动2 位,其实就是除以2 的2 次方,结果还是4。
3.带符号的右移运算符
带符号的右移运算符用符号“”表示,是将运算符左边的运算对象,向右移动运算符右边指定的位数。如果是正数,在高位补零,如果是负数,则在高位补1,先看下面一个简单的例子。
public class data19
{
public static void main(String[] args)
{
int a=16;
int c=-16;
int b=2;
int d=2;
System.out.println("a 的移位结果:"+(ab));
System.out.println("c 的移位结果:"+(cd));
}
}
运行结果
a 的移位结果:4
c 的移位结果:-4
分析上面的程序段:
a 的值是16,转换成二进制是00010000,让它右移两位成00000100 即4。
c 的值是-16,转换成二进制是11101111,让它右移一位成11111011 即-4。
Q2: java,谁能写个代码,能监听上下左右键的!我想实现游戏角色的左右移动!在线等!不要复制百度上的,
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CelMove extends JFrame {
private static final long serialVersionUID = 3171295325956127838L;
CelJPanel cjp;
static int width = 500, height = 380;
public CelMove() {
// 设置方块的初始位置
cjp = new CelJPanel(width / 2, height / 2);
// 设置方块的背景颜色
cjp.setBackground(Color.YELLOW);
// 设置绘制方块的面板的大小
cjp.setSize(width, height);
// 添加鼠标事件 让方块跟着鼠标移动
this.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseMoved(MouseEvent e) {
Point p = e.getPoint();//得到鼠标点击的位置
cjp.lx = p.x;//设置当方块x坐标=点击的x作弊
if (cjp.lx width - 28) {// 28是空出来的一个左右边框大小.为了不让方块移动出了界面
cjp.lx = width - 28;// 如果超过边界.就设置方块的x ,回到边框内
}
if (cjp.lx 0) {
cjp.lx = 0;
}
cjp.ly = p.y;
if (cjp.ly height - 50) {// 50是空出来的一个上下边框大小.为了不让方块移动出了界面
cjp.ly = height - 50;
}
if (cjp.ly 0) {
cjp.ly = 0;
}
// lx,ly坐标设置完成,才执行repaint()重绘
cjp.repaint();
}
// 当拖动鼠标的时候..
@Override
public void mouseDragged(MouseEvent e) {
}
});
// 添加一个键盘事件
this.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int speed = 10;
// S 和 下箭头 可以向下移动
if (e.getKeyCode() == KeyEvent.VK_S || e.getKeyCode() == KeyEvent.VK_DOWN) {
// 这里没有写是否出界的代码.你可以先判断移动后是否会超过边框
cjp.ly = cjp.ly + speed;
cjp.repaint();
}
// W 和 上箭头 可以向上移动
if (e.getKeyCode() == KeyEvent.VK_W || e.getKeyCode() == KeyEvent.VK_UP) {
cjp.ly = cjp.ly - speed;
cjp.repaint();
}
// A 和 左箭头 可以向左移动
if (e.getKeyCode() == KeyEvent.VK_A || e.getKeyCode() == KeyEvent.VK_LEFT) {
cjp.lx = cjp.lx - speed;
cjp.repaint();
}
// D 和 右箭头 可以向右移动
if (e.getKeyCode() == KeyEvent.VK_D || e.getKeyCode() == KeyEvent.VK_RIGHT) {
cjp.lx = cjp.lx + speed;
cjp.repaint();
}
}
});
// 设置主窗口的相关属性
this.setLayout(null);
this.add(cjp);
this.setTitle("移动方块");
this.setLocation(150, 100);
this.setSize(width, height);
this.setResizable(false);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new CelMove();
}
// 绘制方块的类
class CelJPanel extends JPanel {
int lx, ly;
public CelJPanel(int lx, int ly) {
super();
this.lx = lx;
this.ly = ly;
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.RED);
g.fillRect(lx, ly, 20, 20);
}
}
}
你参考下吧,很久前写的
Java向左移动的代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java向左移动的代码怎么写、Java向左移动的代码的信息别忘了在本站进行查找喔。







