Java 如何获取数字的第一位和最后一位,并将两者结合起来

Java 如何获取数字的第一位和最后一位,并将两者结合起来,java,Java,例如: 如果我给一个号码12345,我会得到像15243这样的答案 同样,如果是123456,我应该得到162534 我已经尝试使用反向技术获取第一个值并附加最后一个值 public class MyFirstJavaProgram { public static void main(String []args) { String str = "12345"; String val = str; char a; int num=0; int d=

例如: 如果我给一个号码12345,我会得到像15243这样的答案

同样,如果是123456,我应该得到162534

我已经尝试使用反向技术获取第一个值并附加最后一个值

public class MyFirstJavaProgram {

  public static void main(String []args) {

    String str = "12345";
    String val = str;

    char a;
    int num=0;
    int d=0;
    int n;

    for(int i=0; i<=str.length()/2; i++) {
      a = str.charAt(i);

      num = num*10+Character.getNumericValue(a);
      if(Integer.parseInt(str)!=0){
          d=Integer.parseInt(str)%10;
          num = num*10+d;
          n=Integer.parseInt(str)/10;
          str = Integer.toString(n);
      }          
    }
    System.out.println(num);

  }
}
公共类MyFirstJavaProgram{
公共静态void main(字符串[]args){
字符串str=“12345”;
字符串val=str;
字符a;
int num=0;
int d=0;
int n;

对于(int i=0;i这是我的练习解决方案:

方法参数“A”是要分析的整数

首先从给定的数字创建字符数组,然后对其进行迭代。如果i%2==0,则表示从开头开始获取数字,否则从结尾开始获取数字

public static int algorithm(int A) {
    StringBuilder shuffleNumber = new StringBuilder();
    char[] numbersArray = Integer.toString(A).toCharArray();
    for (int i = 0; i < numbersArray.length; i++) {
        if (i % 2 == 0)
            shuffleNumber.append(numbersArray[i / 2]);
        else
            shuffleNumber.append(numbersArray[numbersArray.length - i / 2 - 1]);
    }
    return Integer.parseInt(shuffleNumber.toString());
}
publicstaticint算法(inta){
StringBuilder ShuffEnumber=新的StringBuilder();
char[]numbersArray=Integer.toString(A.toCharArray();
for(int i=0;i
如果不做你应该做的功课,想象你有一个循环,其中有两个整数变量a和b。变量a和b是字符串索引

您正在从位置a、b、a、b、a、b等处的字符串中提取字符

但是a和b的值在每次迭代中都需要改变。如果字符串的长度为n,a将遵循序列0,1,2,3…而b将遵循序列(n-1)、(n-2)、(n-3)等


循环应该继续,而a如果您想要一个没有字符串方法的解决方案,有一个不太复杂的解决方案:

public static void main(String[] args) throws IOException {
    String str = "1234567";
    int len = str.length();
    int num=0;
    char a;

    for(int i = 0; i < len / 2; i++) {
        a = str.charAt(i);
        num = num * 10 + Character.getNumericValue(a);
        a = str.charAt(len -1 - i);
        num = num * 10 + Character.getNumericValue(a);
    }

    if (len % 2 == 1) {
        a = str.charAt(str.length() / 2);
        num = num * 10 + Character.getNumericValue(a);
    }

    System.out.println(num);
}
如果考虑到数字中的奇数位数,请检查最后一个。

公共类MyFirstJavaProgram{
public class MyFirstJavaProgram {

public static void main(String []args) {

String str = "12345678";
int val = str.length();

char a;
int num=0;
int d=0;
int n;

for(int i=0; i<=str.length()-2; i++)
{
      a = str.charAt(i);
      num = num*10+Character.getNumericValue(a);
      if(Integer.parseInt(str)!=0)
      {
          d=Integer.parseInt(str)%10;
          num = num*10+d;
          n=Integer.parseInt(str)/10;
          str = Integer.toString( n );
      }

}

if(val%2!=0)
{
    num = num*10+Integer.parseInt(str)%10;
     System.out.println(num);
}
else{System.out.println(num);}

}
}
公共静态void main(字符串[]args){ 字符串str=“12345678”; int val=str.length(); 字符a; int num=0; int d=0; int n;
对于(inti=0;i以下是我的解决方案-

 public static void solution(String s) {
        StringBuffer st = new StringBuffer();

        for (int i = 0; i < s.length() / 2; i++) {
            st.append(s.charAt(i));
            st.append(s.charAt(s.length() - 1 - i)); // appending characters from last
        }
        if (s.length() % 2 != 0) {
            st.append(s.charAt(s.length() / 2));
        }
        System.out.println(Integer.parseInt(st.toString()));
    }
公共静态无效解决方案(字符串s){
StringBuffer st=新的StringBuffer();
对于(int i=0;i
我的逻辑是不断向新字符串追加第一个和最后一个字符,直到i否则,就没有字符了,你就有了完整的字符串。

不要用不相关的标签来标记帖子,只是为了让你的问题更明显。这很讨厌。可能这是一个起点。逻辑是什么?12345变为15234我明白,但为什么是15243?123456变为162534,我希望是162345。
字符串是bas一个字符数组。所以我假设你要做的基本上是重新排列一个数组。所以使用
Integer.parseInt
Integer.toString
都没有意义。而且,你似乎在操作从中获取值的相同的
str
str=Integer.toString(n)
)(
a=str.charAt(i)
)在
for
循环中。这可能不是一个好主意……您可能希望将中间结果存储在另一个变量中。@Dominique-我认为算法是:first+last,然后second+second-to-last,third+third-to-last等。
 public static void solution(String s) {
        StringBuffer st = new StringBuffer();

        for (int i = 0; i < s.length() / 2; i++) {
            st.append(s.charAt(i));
            st.append(s.charAt(s.length() - 1 - i)); // appending characters from last
        }
        if (s.length() % 2 != 0) {
            st.append(s.charAt(s.length() / 2));
        }
        System.out.println(Integer.parseInt(st.toString()));
    }