java - 我很好奇如何在不使用 ARRAYS 的情况下获取所述字符串中其余部分中最小/最大的字符

标签 java

我只是很难理解这个概念。

每个字符都有不同的 ASCII 值,那么我如何获取最低值或最高值?

如果我将一个空字符串传递给我的方法,对于所有这些 min() 只会抛出一个错误还是会返回 0?

我编写了一个测试驱动程序,如果我的 min 方法返回 w 作为最小值(该字符串中的字符现在只是一个 stub 方法),则该驱动程序应该通过。

    final String PASS = "Pass";
    final String FAIL = "Fail";

    L05A lab5 = new L05A();

    int testNum = 1;
    String tst = "";    // test empty string
    String result = FAIL;


    System.out.println("\nTesting min\n");


    tst = "";
    char ch  = lab5.min(tst);
    result = (ch == '!') ? PASS : FAIL;

    System.out.println(testNum + ": " + result);
    ++testNum;


    tst = "zyxw"; //would return w?
    ch  = lab5.min(tst);
    result = (ch == 'w') ? PASS : FAIL;

    System.out.println(testNum + ": " + result);
    ++testNum;

那么我如何扫描我传递的字符串以返回最小的字符?

起初我以为我可以使用 str.charAt(0);但愚蠢的我,只返回字符串的第一个索引,所以我很困惑!任何帮助都会很好地开发这个 min 方法

我应该指明我们在此作业中没有使用任何形式的数组[] 不幸的是..:(

最佳答案

这很简单:

  1. 将字符串转换为 char使用 String.toCharArray 的数组
  2. 将数组转换为 Collection<Character>
  3. 将集合传递给 Collections.minmax来自java.util.Collections

例如:

String test = "test";
List<Character> strArr = new ArrayList<Character>(test.length());
for (char c : test.toCharArray()) strArr.add(c);
System.out.println(Collections.min(strArr)); // prints "e"

编辑好的,现在你说你不能使用 Arrays ,所以你只需这样做:

String test = "test";
char[] chars = test.toCharArray();
char max = Character.MIN_VALUE;
char min = Character.MAX_VALUE;
for (int i = 0; i < chars.length; i++) {
  char c = chars[i];
  max = max > c ? max : c;
  min = min < c ? min : c;
}
System.out.println(min);

最后,如果您不能使用数组(例如 char[] ),那么您只需删除 toCharArray 即可调用,并像这样启动循环:

for (int i = 0; i < test.length(); i++) {
  char c = test.charAt(i);

关于java - 我很好奇如何在不使用 ARRAYS 的情况下获取所述字符串中其余部分中最小/最大的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28596515/

相关文章:

java - 日期时间格式化程序java

java - 如果在我的 for 循环中相同的对象在所有迭代中都被初始化,会发生什么?

java - 缺少 InitialContext 定义时使用哪个 Java 运行时异常

java - 将简单的 java 数组传递给原始 c 数组 swig

java - 使用算法和 Rectangle.intersects (java/lwjgl) 的碰撞检测

java - Java 中十六进制 key 、IV 和数据的 AES 加密

java - 如何编写因未调用 ScheduledExecutorService.shutdown 而失败的测试?

java - Listview 的 onclick 事件问题

java - 上传照片并将其保存到Oracle数据库10g中

java - 异常 : javax.net.ssl.SSLPeerUnverifiedException:对等体未通过身份验证