java - 如何只打印数组中的偶数或奇数字符?

标签 java arrays for-loop

假设我有字符串:'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/

相关文章:

JAVA - 使用 FOR、WHILE 和 DO WHILE 循环对 1 到 100 求和

javascript - for循环内的jQuery变量

java - 在 JSch 中使用 2048 位素数

javascript - 如何从此 JSON 数组中删除不需要的元素?

javascript - 基于一个属性javascript对多维数组进行分组

c++ - 在 C++ 中处理不同数组维度和数据类型的模板函数

c - C 中完整的 "for"循环语法是什么?

java - Java 中的方法绑定(bind)

java - 需要以良好的方式显示从 GAE 数据存储查询的数据

java - J2ME中如何获取数字的幂