计算Character数组中的字符 - JAVA

时间:2013-10-27 18:43:22

标签: java arrays string char

首先,当谈到java时,我很新鲜。我的程序应该向用户询问字符串并打印它们刚放入的内容。然后应该将所有字符更改为小写并从字符串中删除所有空格并打印出来。在此之后,它应该打印字母表的字符数组,并使用星号(*)显示字符串中每次出现一个字符(我甚至不知道从哪里开始)。现在它只是在一个数组中打印String(不正确)。这就是我到目前为止所拥有的。它将打印没有空格的字符串或原始字符串,但不打印两者。我的对象/数组命名是残暴的,我提前道歉。任何指导都将非常感谢

编辑:这是问题所在 在此作业中,您将编写一个程序,该程序将执行以下操作:

  1. 要求用户输入正整数m,然后读取该整数。用一个 在main中声明的扫描器对象读取此整数。

  2. 调用一个方法,要求用户输入m个字符串。正如弦乐一样 读,它们应该连接成一个单独的字符串st。读取m个字符串并形成单个字符串st后,该方法应返回st。注意:此方法将有两个参数,一个用于接收m的int和一个用于接收在main中声明的Scanner对象的Scanner对象。

  3. 在主要打印中,从方法收到的连接字符串。

  4. 主要将String对象转换为小写。

  5. 主要将小写的String对象转换为char数组。 (所有字母 将是小写。)

  6. 在主要打印中刚刚创建的字符数组。 (需要循环结构。)

  7. 调用以下列方式压缩字符数组的方法。 该方法将计算数组中字母表的字母,创建一个大小等于该计数的新数组,并仅将原始数组的字母复制到新数组中。返回新阵列。

  8. 在main中声明一个大小为26的整数数组。调用一个带有两个参数的方法,一个字符数组x(只包含小写字母,以及一个整数数组z,它将接收在main中声明的那个) 。该方法将整数数组中的所有条目设置为零。然后它将处理小写字母数组并计算每个字母出现的次数。提示:z [x [i] -97] ++可以进行计数。 a的ASCII码是97,所以如果x [i]是'a',则z [0]将递增。 'b'会导致z [1]递增等等。整数数组现在包含小写字母数组中字母的频率分布。

  9. 使用一个整数数组参数(将接收频率分布数组)调用方法,并在新行上打印每个字母,后跟等于该数组元素中整数值的星号数。这必须整齐排列。提示:如果i是0≤≤25的索引,则(char)(i + 97)是字母表的小写字母。

    package lab6;
    
    import java.util.Scanner;
    
    public class Lab6 {
    
        public char sent[];
    
    
    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("enter the number of strings you want: ");
    int m = input.nextInt();
    Lab6 loo = new Lab6();
    loo.print(loo.loop(m));
    
    
    }
    
    public String loop(int m) { //print the string that was entered
    String total = " ";
    for (int i = 1; i <= m; i++) {
        Scanner input = new Scanner(System.in);
        System.out.println("enter string: " + i);
        String st = input.nextLine();
    
        total += st + "";
    
    }
    System.out.println(total);
    
    return total;
    
    }
    
    public void print(String ht) { //print array
    
    String st = ht.toLowerCase().replaceAll("\\s", "");
    sent = st.toCharArray();
    for (int i = 0; i < sent.length; i++) {
        System.out.println(sent[i]);
    
            }
        }
    }
    

1 个答案:

答案 0 :(得分:0)

听起来像计算机科学不是你的一杯茶。我强烈建议您重构此代码并尝试弄清楚它为什么会这样做。

public void print(String ht) { // print array

    String st = ht.toLowerCase().replaceAll("\\s", "");
    sent = st.toCharArray();

    int[] alphabet = new int[26];
    //set all values to 0
    for(int i = 0 ; i < alphabet.length ; i++){
        alphabet[i] = 0;
    }
    //Loop through all characters and increment corresponding value
    for(int i = 0 ; i < sent.length ; i++){
        alphabet[sent[i] - 97]++;
    }
    //Print character + asterisk for each time the character is used
    for(int i = 0 ; i < alphabet.length ; i++){
        System.out.print((char)(i + 97) + ": ");
        for(int nChars = 0 ; nChars < alphabet[i] ; nChars++){
            System.out.print("*");
        }
        System.out.println();
    }

}