我只是很难理解这个概念。
每个字符都有不同的 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 方法
我应该指明我们在此作业中没有使用任何形式的数组[] 不幸的是..:(
最佳答案
这很简单:
- 将字符串转换为
char
使用String.toCharArray
的数组 - 将数组转换为
Collection<Character>
- 将集合传递给
Collections.min
和max
来自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/