Java 如何获取数字的第一位和最后一位,并将两者结合起来
例如: 如果我给一个号码12345,我会得到像15243这样的答案 同样,如果是123456,我应该得到162534 我已经尝试使用反向技术获取第一个值并附加最后一个值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=
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()));
}