交换输入并打印输出作为列
Swap input and print output as column
我给自己设定了一个我无法完成的任务。需要帮忙。
我想要实现的是用户输入的数字应该成对交换,如果有逗号分隔的数字,下一次交换应该从新行输出。
就像我说:10000234567,10000234568,10000234569 那么输出应该是这样的:
01002043657,
01002043658,
01002043659
这是我的代码:
import java.util.Scanner;
public class SwapNumbersTest {
public static String swapPairs(String str) {
char[] arr = str.toCharArray();
for (int i = 1; i < arr.length; i += 2) {
if(arr[i] == ','){
i+=2;
}
char swap = arr[i];
arr[i] = arr[i - 1];
arr[i - 1] = swap;
}
return new String(arr);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a comma separated numbers: ");
String str = sc.nextLine();
System.out.println(swapPairs(str));
}
}
我在想,如果中间有一个字符“,”,那么之前的所有数字都应该写入一个字符数组,并从新的一行打印出来。你能告诉我,如何实现这样的事情吗?
我还注意到,如果输入的数字不是偶数,那么交换就可以完美地工作,如果输入的数字是偶数,',' 逗号就会乱七八糟。
我不明白你到底想要什么,但要将逗号分隔的数字转换为数字数组,你可以执行以下操作。
StringTokenizer st = new StringTokenizer(str, ",");
Array<Integer> arr = new ArrayList<Integer>;
while(st.hasMoreTokens()) {
arr.add(Integer.parseInt(st.nextToken()));
}
完成此操作后,我认为您可以在整数数组中应用您的算法。
实现此目的的一种方法是使用 Split() 函数
String[] arr = str.split(",");
以下是完全按照您的要求进行操作的方法:
public class SwapNumbersTest {
public static String swapPairs(String inputString) {
String swappedNumbers = "";
String[] arrayOfNumbers = inputString.split(",");
for (String str : arrayOfNumbers) {
char[] arr = str.toCharArray();
for (int i = 1; i < arr.length; i += 2) {
if (arr[i] == ',') {
i += 2;
}
char swap = arr[i];
arr[i] = arr[i - 1];
arr[i - 1] = swap;
}
swappedNumbers = swappedNumbers + new String(arr) + ",\n";
}
return swappedNumbers.stripTrailing().replaceAll(",$","");
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a comma separated numbers: ");
String str = sc.nextLine();
System.out.println(swapPairs(str));
sc.close();
}
}
如果您不想在行尾使用逗号,可以使用以下方式简化它:
swappedNumbers = swappedNumbers + new String(arr) + "\n";
}
return swappedNumbers.stripTrailing();
我给自己设定了一个我无法完成的任务。需要帮忙。
我想要实现的是用户输入的数字应该成对交换,如果有逗号分隔的数字,下一次交换应该从新行输出。
就像我说:10000234567,10000234568,10000234569 那么输出应该是这样的:
01002043657,
01002043658,
01002043659
这是我的代码:
import java.util.Scanner;
public class SwapNumbersTest {
public static String swapPairs(String str) {
char[] arr = str.toCharArray();
for (int i = 1; i < arr.length; i += 2) {
if(arr[i] == ','){
i+=2;
}
char swap = arr[i];
arr[i] = arr[i - 1];
arr[i - 1] = swap;
}
return new String(arr);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a comma separated numbers: ");
String str = sc.nextLine();
System.out.println(swapPairs(str));
}
}
我在想,如果中间有一个字符“,”,那么之前的所有数字都应该写入一个字符数组,并从新的一行打印出来。你能告诉我,如何实现这样的事情吗?
我还注意到,如果输入的数字不是偶数,那么交换就可以完美地工作,如果输入的数字是偶数,',' 逗号就会乱七八糟。
我不明白你到底想要什么,但要将逗号分隔的数字转换为数字数组,你可以执行以下操作。
StringTokenizer st = new StringTokenizer(str, ",");
Array<Integer> arr = new ArrayList<Integer>;
while(st.hasMoreTokens()) {
arr.add(Integer.parseInt(st.nextToken()));
}
完成此操作后,我认为您可以在整数数组中应用您的算法。
实现此目的的一种方法是使用 Split() 函数
String[] arr = str.split(",");
以下是完全按照您的要求进行操作的方法:
public class SwapNumbersTest {
public static String swapPairs(String inputString) {
String swappedNumbers = "";
String[] arrayOfNumbers = inputString.split(",");
for (String str : arrayOfNumbers) {
char[] arr = str.toCharArray();
for (int i = 1; i < arr.length; i += 2) {
if (arr[i] == ',') {
i += 2;
}
char swap = arr[i];
arr[i] = arr[i - 1];
arr[i - 1] = swap;
}
swappedNumbers = swappedNumbers + new String(arr) + ",\n";
}
return swappedNumbers.stripTrailing().replaceAll(",$","");
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a comma separated numbers: ");
String str = sc.nextLine();
System.out.println(swapPairs(str));
sc.close();
}
}
如果您不想在行尾使用逗号,可以使用以下方式简化它:
swappedNumbers = swappedNumbers + new String(arr) + "\n";
}
return swappedNumbers.stripTrailing();