【问题标题】:Converting a user input word into a unicode array in Java将用户输入的单词转换为 Java 中的 unicode 数组
【发布时间】:2015-01-26 12:06:43
【问题描述】:

所以我在弄清楚如何将用户输入的单词转换为一个 int 数组时遇到了问题,该数组的每个字母都有自己的 unicode 值(所以像“A”这样的东西会变成 65 in数组)。我在想一种可以做到这一点的方法是,首先我将用户输入的单词分成单独的字符(所以字符串“And”首先会被分成字符“A”、“n”、“ d",然后将它们放入 int 数组时会变成 int 65、110、100)。问题是我不知道该去哪里。我不确定如何将单词拆分为单独的字符,然后将这些字符转换为 int 数组。任何帮助是极大的赞赏!另外,正如我旁注一样,我还需要能够找到所有值的最大值、最小值和平均值。

【问题讨论】:

  • charAt()方法。

标签: java arrays char int type-conversion


【解决方案1】:

试试这个:

public static void stringToArray (){                                  
        Scanner in = new Scanner(System.in);
        System.out.print("Input String: ");             
        String input = in.nextLine();
        Integer[] lista = new Integer[input.length()];
        for(int i=0;i<input.length();i++) {
            lista[i] = input.codePointAt(i);  
            System.out.print(lista[i] + " ");
        }        
        System.out.print("\nArray descending order: ");
        Arrays.sort(lista, Collections.reverseOrder());
        for(int i=0;i<input.length();i++) 
            System.out.print(lista[i] + " ");                                   
        if (lista.length>0) {  
            int min=lista[0];
            int max=lista[0];
            int sum=0;
            int avg;
            for(int i=0;i<lista.length;i++){
                if (lista[i]> max) max=lista[i];
                if (lista[i]< min) min=lista[i];
                sum += lista[i];                
            }
            avg=sum/lista.length;                
            System.out.println("\nThe maximun value is: "+max);
            System.out.println("The minimun value is: "+min);
            System.out.println("The average value is: "+avg);                            
        }
}

【讨论】:

  • 这有帮助,但我仍在试图弄清楚如何做到这一点,所以我可以只输入一次单词而不是一次我的方法来确定它是否是回文,以及方法上面将单词放入一个 int 数组中。
  • 你知道如何在显示数组时将值从大到小排序吗,这是我现在需要做的最后一件事。
  • 修改:对数组进行降序排序。将数组类型从 int 更改为 Integer 类以使用 Arrays.sort (list, Collections.reverseOrder ());
  • 对不起,我对 Java 很陌生,有点困惑。我只需要像显示数组时那样将数字从最小到最大排序(所以如果它是 5 3 1 4 2 它会变成 1 2 3 4 5 )。
  • 那么你必须使用Arrays.sort (lista); 而不是:Arrays.sort (lista, Collections.reverseOrder ());
【解决方案2】:

一种可能的解决方案是迭代String 中的字符并将它们复制到一个新的int 数组中,例如,

public static int[] getPoints(String str) {
    if (str == null) {
        return null;
    }
    char[] chars = str.toCharArray();
    int[] out = new int[chars.length];
    for (int i = 0; i < chars.length; i++) {
        out[i] = chars[i];
    }
    return out;
}

然后你可以像这样测试它,

public static void main(String[] args) {
    System.out.println(Arrays.toString(getPoints("And")));
}

输出是(按要求)

[65, 110, 100]

【讨论】:

  • 这行得通,但我需要它,这样它才能接受用户输入的单词,而不是硬编码的单词(我只是使用“And”作为示例)。跨度>
  • @Fyree 所以,获取用户输入,然后像我的示例一样调用getPoints(String)
【解决方案3】:

这会将每个字符添加到一个整数数组中:

public static int[] codepoints(String str) {
    int[] arr = new int[str.length()];
    for (int i = 0; i < arr.length; i++) {
        arr[i] = str.charAt(i);
    }
    return arr;
}

DEMO

【讨论】:

  • 这可以获取用户输入值吗?上面的答案适用于硬编码的单词,但我需要它从用户输入单词中获取字符,然后将其转换为 in[] 中的整数。
猜你喜欢
  • 2020-01-28
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
  • 2019-05-31
  • 2017-09-30
  • 2022-05-30
  • 2011-11-29
  • 2015-02-14
相关资源
最近更新 更多