字符串的类型

1.未知输入字符的数量:

1.2 n.length 方法未知数量变为已知数量字符

java:

  1. 源代码(输入一串字符,取出其中的元音)
  2. public static void main(String[] args) {
  3. //写一函数,将一个字符串中的元音字母复制到另一个字符串,然后输出
  4. Scanner sc = new Scanner(System.in);
  5. System.out.println("请输入一个字符串:");
  6. String n = sc.next();
  7. for(int i=0;i<n.length();i++) {
  8. char m = n.charAt(i);
  9. if(m=='a'||m=='e'||m=='i'||m=='o'||m=='u')
  10. System.out.print(m);
  11. }//这种一次只能存储一个字符串
  12. }
  13. }

注:charAt(i) 是 String 类的一个方法,它用于返回字符串中指定索引位置的字符。这里的 i 是一个整数,代表了你想要获取的字符在字符串中的位置(索引从0开始) //和数组取其任意位置的字符效果一样。

  • 该题中:n.length 代表字符串 n 的长度,即字符串中字符的个数。
  • 在 Java 中,字符串是一个对象,它有一个 length() 方法,用于返回该字符串的长度(即字符的数量)。在这个例子中,n.length() 返回了字符串 n 中字符的总数,或者使用动态存储c

  • 在 C 语言中字符串通常是以字符数组的形式表示的,因此没有直接的 length 属性来获取字符串的长度。相反,C 语言提供了一些函数来操作字符串,包括一个函数来计算字符串的长度。你可以使用 strlen 函数来计算一个字符串的长度。strlen 函数定义在 <string.h> 头文件中,它接受一个字符指针(通常是一个字符串)作为参数,并返回字符串中字符的数量(不包括末尾的空字符 '\0'),

  • char str[] = "Hello, World!";//输入一串字符

  • int length=strlen(str);//计算该字串长度

    strlen(str) 返回字符串 str 的长度(不包括末尾的空字符),然后将这个长度存储在 length 变量中。然后,程序打印出这个长度。

  • String.valueOf(char) 时,您正在执行一个从 char 类型到 String 类型的显式转换

  • 1.3动态存储(按未知量解决)

  • 在Java中,存储未知数量的字符串到List<String>时,通常的做法是使用ArrayList或者其他的List实现类,因为它允许动态地添加元素。你已经提到了使用while循环或for循环来读取输入并添加到列表中的方法。这里再详细讨论一下这两种方法,并补充一些其他可能的方案。

    1. 使用while循环和标识符

    这种方法通常用于从输入流(例如用户输入、文件等)中读取字符串,直到遇到特定的标识符为止。

     

    java复制代码

    import java.util.List; 

    import java.util.ArrayList;//必要的俩个类

    List<String> stringList = new ArrayList<>();

    //List为接口,string为类型,stringList为变量名

    String input;
    System.out.println("请输入字符串,输入'END'结束:");
    while (!(input = scanner.nextLine()).equals("END")) {
    stringList.add(input);
    }
    scanner.close();

    在这个例子中,用户输入字符串,每输入一个字符串就按下回车,直到输入"END"为止。程序会将每个字符串添加到stringList中。

    2. 使用for循环和最大初值

    如果你有一个大致的最大值预期,可以使用for循环来读取固定次数的输入。但这种方法不是真正的动态存储,因为它依赖于一个预设的最大值。

     

    java复制代码

    Scanner scanner = new Scanner(System.in);
    List<String> stringList = new ArrayList<>();
    int maxInputs = 10; // 假设最多输入10个字符串
    for (int i = 0; i < maxInputs; i++) {
    System.out.println("请输入字符串:" + (i + 1));
    stringList.add(scanner.nextLine());
    }//这个可以存取多个字符串
    scanner.close();

    3. 使用迭代器(Iterator)或流(Stream)

    如果你的输入来自一个实现了Iterable接口的对象(如集合、数组等),你可以使用迭代器或Java 8引入的流来动态地处理输入。这种方法不是直接用于从用户或文件读取,而是用于处理已经存在于内存中的数据集合。

    例如,使用流处理一个字符串数组:

     

    java复制代码

    String[] inputArray = {"string1", "string2", "string3"}; // 假设这是你的输入源
    List<String> stringList = Arrays.stream(inputArray)
    .collect(Collectors.toList());

    4. 动态存储的专有方法

    Java的List接口和它的实现类(如ArrayList)本身就是为动态存储设计的。它们允许你在运行时根据需要添加或删除元素。因此,当你提到“动态存储专有的方法”时,实际上你已经在使用它们了。ArrayList会根据需要自动调整其内部数组的大小。

    没有专门的“动态存储方法”独立于List接口和其实现类之外。你通常是根据具体的应用场景选择最适合的集合类(如ArrayListLinkedList等)和读取输入的方式(如使用循环、流等)。

    总之,对于未知数量的字符串,使用List接口的实现类(如ArrayList)是最常见且灵活的方式。具体如何读取和存储这些字符串则取决于你的输入源和需求。

  • (2)字符串类库方法

java复制代码

System.out.println(concatenated); // 输出连接后的字符串
// 或写入文件、发送到网络等

这些只是字符串操作的一部分。Java的String类提供了很多其他有用的方法,你可以根据具体需求查阅Java文档以获取更多信息。同时,记住字符串在Java中是不可变的,这意味着对字符串的任何操作实际上都会返回一个新的字符串对象,而不是修改原始对象。

  • 字符串的各种类库

  • 在Java中,对字符串进行操作通常涉及一系列步骤,这些步骤可以根据你的具体需求而变化。假设你已知字符串的数量,并且想要对这些字符串执行一些常见的操作,以下是一些可能的步骤和例子:

  • 初始化字符串数组或列表
    首先,你需要创建一个能够存储这些字符串的数据结构。这可以是一个字符串数组或一个ArrayList<String>
  • java复制代码

    int numberOfStrings = 10; // 假设有10个字符串
    String[] strings = new String[numberOfStrings];
    // 或者使用ArrayList
    List<String> stringList = new ArrayList<>(numberOfStrings);
  • 填充字符串
    接着,你需要为这些字符串赋值。这可以通过直接赋值、循环、用户输入或文件读取等方式完成。
  •  

    java复制代码

    for (int i = 0; i < numberOfStrings; i++) {
    strings[i] = "字符串" + i; // 示例:创建包含索引的字符串
    // 或者从用户输入、文件等获取字符串
    }
    // 如果使用ArrayList
    for (int i = 0; i < numberOfStrings; i++) {
    stringList.add("字符串" + i);
    }
  • 字符串操作
    现在你可以对字符串执行各种操作了。以下是一些常见的操作:

    连接(Concatenation)
    将两个或多个字符串合并成一个。
    

    java复制代码

    String concatenated = strings[0] + strings[1];
    比较(Comparison)
    比较两个字符串是否相等,或者比较它们在字典序中的位置。
    

    java复制代码

    if (strings[0].equals(strings[1])) {
    // 字符串相等
    }
    int comparison = strings[0].compareTo(strings[1]);
    子字符串操作
    提取字符串的一部分,或者查找子字符串的位置
    

    java复制代码

    String substring = strings[0].substring(1, 3); // 获取索引1到2(不包括3)的子字符串
    int index = strings[0].indexOf("子字符串"); // 查找子字符串的位置
    替换和删除
    替换字符串中的某些字符或子字符串,或者删除特定的字符。
    

    java复制代码

    String replaced = strings[0].replace("旧", "新");
    String trimmed = strings[0].trim(); // 去除首尾的空格
    大小写转换
    将字符串转换为全大写或全小写
    

    java复制代码

    String upperCase = strings[0].toUpperCase();
    String lowerCase = strings[0].toLowerCase();
    分割
    根据指定的分隔符将字符串分割为多个子字符串
    

    java复制代码

    String[] splitStrings = strings[0].split(","); // 根据逗号分割字符串
    检查
    检查字符串是否包含特定的字符或子字符串,或者检查字符串是否为空。
    

    java复制代码

    boolean contains = strings[0].contains("特定字符");
    boolean isEmpty = strings[0].isEmpty();
    • 连接(Concatenation)
      将两个或多个字符串合并成一个。
    • 比较(Comparison)
      比较两个字符串是否相等,或者比较它们在字典序中的位置。
    • 子字符串操作
      提取字符串的一部分,或者查找子字符串的位置。
    • 替换和删除
      替换字符串中的某些字符或子字符串,或者删除特定的字符。
    • 大小写转换
      将字符串转换为全大写或全小写。
    • 分割
      根据指定的分隔符将字符串分割为多个子字符串。
    • 检查
      检查字符串是否包含特定的字符或子字符串,或者检查字符串是否为空。
  • 处理结果
    根据你的需求,你可能需要将操作结果输出到控制台、保存到文件、通过网络发送,或者在程序的其他部分使用。

将输入的字符串直接存到数组中:

(1)未知长度

// 创建一个字符数组,用于存储字符串的字符

char[] charArray = str.toCharArray();

(2)已知长度

for (int i = 0; i < inputString.length(); i++)

{ charArray[i] = inputString.charAt(i); }

将一个字符数组转换为字符串的形式,进行输出

char[] charArray = {'H', 'e', 'l', 'l', 'o'}; // 将字符数组转换为字符串

String str = new String(charArray);

将一个字符串转换为数组的形式,进行输出   

  1. char x[]=str.toCharArray()

    • str 是一个 String 类型的对象。
    • toCharArray() 是 String 类的一个方法,用于将该字符串转换为一个字符数组。这意味着字符串中的每一个字符都会成为数组中的一个元素。

对二维数组进行赋值:

public static void inputData(int[][] arr){
    for(int i =0;i<arr.length;i++)
        for(int j=0;j<arr[i].length;j++)
            arr[i][j] =scan.nextInt();
}

俩二维数组进行合并,以数组c输出

public static int[][] addMatrix(int[][]arr1,int[][]arr2){
    int [][] c = new int[arr1.length][arr1[0].length];
    for(int i =0;i<arr1.length;i++)
        for(int j =0;j<arr1[i].length;j++)
            c[i][j] = arr1[i][j] + arr2[i][j];
    return c;
}

 d=addMatrix(a,b);//切记不是d[m][n],因为上面返回的是c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值