java - 将数组的所有元素向右移动

标签 java arrays

所以我得到了一个大小为 22 的数组,它从控制台读取一个数字并将该数字添加到数组中。所以如果在数组中读取 123456 将打印出来

12345600000000...类似的东西。

我需要右对齐这个数字来执行算术运算,但我似乎无法让循环结构正确地输出该数字!

int[] newlong = new int[22];
String inputline = "";

public void readNewLong()
{
    Scanner in = new Scanner(System.in);
    inputline = in.nextLine();

    try
    {
         for (int i = 0; i < inputline.length(); i ++)
         {
              char a = inputline.charAt(i);
              String b = "" + a;
              newlong[i] = Integer.parseInt(b);
         }

    }
    catch (NumberFormatException nfe)
    {
        System.out.println("NumberFormatException, you must enter a string of digits. " + nfe.getMessage());
    }
}

这就是读取数字、输入行并将其存储在数组 newLong 中的内容。

下面的方法不起作用...

public void rightJustify()
{
     printLong();
     System.out.println(inputline.length());

     for(int i = 0; i< inputline.length(); i++)
     {
         for(int j = 0; j < newlong.length; j++)
         {
              newlong[j] = (newlong[j] - (inputline.length() -i));
         }  
     }
     printLong();      
}                     

最佳答案

为什么你要证明实际上你可以按正确的顺序输入?

如果 newlong[] 是全局的,则所有位置均为 0

for (int i = inputline.length()-1; i>=0; i--)
{
    char a = inputline.charAt(i);
    String b = "" + a;
    newlong[22 - inputline.length() + i] = Integer.parseInt(b);
}

已编辑: 如果您更喜欢调整方法,我推荐您:

public void rightJustify() {
    System.out.println(inputline.length());

    for (int i = inputline.length()-1; i>=0; i--) {
        newlong[22 - inputline.length() + i] = newlong[i];
        newlong[i] = 0;
    }
}

关于java - 将数组的所有元素向右移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5060199/

相关文章:

java - JVM 如何使用给定的 jaas.conf 文件?

java - 调整 Ubuntu 字体高度

Java 子字符串匹配失败

c++ - 从 std::vector<glm::vec3> 获取一个 float 类型的数组指针

c - 将数组传递给函数时,如果我在该函数中更改数组的值,原始数组的值会改变吗?

java - 如何使用java与已经运行的进程交互

java - 封装的指标是什么?

php - 如何在查询字符串中传递数组?

arrays - 将 HSTORE 数组值转换为 JSONB 中的列

javascript - 删除字符串中出现的重复单词