【问题标题】:Java String function help needed需要 Java 字符串函数帮助
【发布时间】:2015-07-30 11:25:18
【问题描述】:

我有一个来自大学的家庭作业问题,我遇到了麻烦,我想知道是否有人可以就如何处理它给我一些建议。我们使用数组、for 循环、if else 和字符串。

我必须创建一个程序来接收许多人的名字,然后将它们放入一个数组中(我没有问题)然后我需要根据每个名字的第一个字母来分隔数组中的名字: A-G 在一个数组中,字母 H-P 在另一个数组中,其余的在最终数组中。

有人告诉我为此使用字符串函数,但不要使用列表或字符。 这是我到目前为止的代码:

import java.util.Scanner;

public class Party {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) 
{
   Scanner sc = new Scanner(System.in); // declaring scanner

   int numGuests; // declaring the variable for number of guests
    System.out.println("please enter the number of guests you are hosting : ");
    numGuests = sc.nextInt(); // scanner for user inout num of guests

    String[] names = new String[numGuests]; // string for number of guests

    System.out.println("Please enter names "); 

    for(int i = 0; i < names.length; i++) // for loop for inputing the names.
    {
        names[i] = sc.next();
    }
}    
}

【问题讨论】:

  • 这不是问题,不属于这里。
  • 你还没有尝试分开名字。先试试你自己。
  • 好吧,它离题了...但仍要向您发送正确的方向...所以对于字符串 charAt(0) 这将给出第一个字符,并在此基础上对它们进行排序.. .
  • 看起来不错的代码。你有什么问题?
  • 如果你的任务允许的话,你也可以去匹配和一些正则表达式。

标签: java arrays string function


【解决方案1】:
Please Use below logic and get result according to your requirement..
package com.test;
public class Namessplite {
    public static void main(String args[]){
    String[] names={"ABC","CAD","JKL","MNO"}; // these are names for example
    String[] atog_group = new String[10];
    String[] gtopgroup=  new String[10];
    int j=0,k=0;
    for(int i=0;i<names.length;i++){
        if((int)names[i].charAt(0)<72 && (int)names[i].charAt(0)>64){
            atog_group[j]=names[i];
            j++;
        }else{
            gtopgroup[k]=names[i];
            k++;
        }
    }
    System.out.println("A TO G Names Are :: ");
        for(int m=0;m<j;m++){
            System.out.println(atog_group[m]);  
        }
                System.out.println("G TO P Names Are :: ");
        for(int m=0;m<k;m++){
            System.out.println(gtopgroup[m]);   
        }
    }
}

【讨论】:

  • 如果您更改字母的大小写,即小写费用 72 为 68 和 64 为 60
【解决方案2】:

Java 8 风格:

private static void splitNamesToArray(String[] names) {

    String[] aToG = Arrays.stream(names).filter(n -> n.toUpperCase().charAt(0) >= 65 && n.toUpperCase().charAt(0) <= 71).toArray(String[]::new);
    String[] hToP = Arrays.stream(names).filter(n -> n.toUpperCase().charAt(0) >= 72 && n.toUpperCase().charAt(0) <= 80).toArray(String[]::new);
    String[] rest = Arrays.stream(names).filter(n -> n.toUpperCase().charAt(0) >= 81 && n.toUpperCase().charAt(0) <= 90).toArray(String[]::new);

    System.out.println("A to G: " + Arrays.toString(aToG));
    System.out.println("H to P: " + Arrays.toString(hToP));
    System.out.println("Rest: " + Arrays.toString(rest));
}

【讨论】:

    最近更新 更多