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