假设我有字符串:'firetruck'。然后我将该字符串拆分为单个字母,并将它们放入一个名为 T 的数组中。所以现在 T[] 看起来像 {f,i,r,e,t,r,u,c,k}。我怎样才能只打印偶数字符,使我的打印语句看起来像“frtuk”而奇数看起来像“ierc”。这是我到目前为止得到的:
import java.util.Scanner;
import java.util.Arrays;
public class StringFun {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String even_odd = sc.next();
char[] t = even_odd.toCharArray();
System.out.println(Arrays.toString(t));
//I can't get this next part to work.
for(int i = t[0]; i < t.length; i = i + 2){
System.out.println(Arrays.toString(t[i]));
}
}
}
最佳答案
只是代码中的一个小错误:
您不需要数组中的第一个值来初始化循环变量i
,只需索引值您想要的循环开始于。
要记住的一个棘手的事情是索引从 0 开始,但是我们人类从 1 开始计数。(我在第一次编辑答案时也犯了这个错误) 所以当起始值为奇数时,将打印序号为偶数的字符。
索引的开始是一个非常普遍的问题,必须时刻牢记......
此外,您可以直接打印字符,不需要 Arrays.toString()方法在这里:
System.out.println(t[index]);
够了。
奇数字符: 将 i
设置为 0:这将打印第 1、3... 个字符
for(int i = 0; i < t.length; i = i + 2){
System.out.println(t[i]);
}
偶数字符: 将 i
设置为 1:这将打印第 2、4... 个字符
for(int i = 1; i < t.length; i = i + 2){
System.out.println(t[i]);
}
消除数组
另外,你甚至不需要创建一个字符数组,你可以使用 String.charAt(int index)为此目的:
String even_odd = sc.next();
for(int i = 0; i < even_odd.length(); i = i + 2){
System.out.println(even_odd.charAt(i));
}
更上一层楼
此外,为了更好,您可以将其提取到一个函数中,然后重用该功能:
private static void printChars(String input, boolean even) {
int i = 0;
if(even) { //if we need the even chars, start from 1;
i=1;
}
for(; i < input.length(); i = i + 2){
System.out.println(input.charAt(i));
}
}
然后你的主要方法就是这样:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String even_odd = sc.next();
char[] t = even_odd.toCharArray();
System.out.println(Arrays.toString(t));
//calling the function for even numbers
printChars(even_odd, true);
//calling the function for odd numbers
printChars(even_odd, false);
}
记住重复不好。 重用 --> 好。
关于java - 如何只打印数组中的偶数或奇数字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18790309/