您好我需要创建一个程序,让用户输入一个名称(例如)并在字符串中找到最大值ascii字符,然后将其输出给用户。我已经开始了,但我不确定在哪里继续。谢谢你的帮助。
System.out.println("Enter your name: ");
String name = input.nextLine();
char ch = ' ';
int i;
for (i = 0; i < name.length(); i++)
{
}
答案 0 :(得分:2)
String name = "Just for Testing";
int greatestVal = 0;
for (int i = 0; i < name.length(); i++)
{
int curVal = (int)name.charAt(i);
if(curVal > greatestVal)
greatestVal = curVal;
}
char asChar = (char)greatestVal;
System.out.println("The character with the highest ASCII (encoding) number was " + asChar + " (with ASCII (encoding) " + greatestVal + ")");
现在解释一下:
在int curVal = (int)name.charAt(i);
行发生的事情称为显式投射。 .charAt()
会返回char
,我们会将int
投放到(int)
(在其前面使用curVal
)。这就是魔法&#34;发生。 i
现在包含平台默认编码中greatestVal
位置字符的相应值(对于更多信息see this post)。几乎所有这些编码的共同点是前128个字符与ASCII匹配,更多细节in this question。
现在可以将其与char asChar = (char)greatestVal;
进行比较,并通过循环遍历整个String,我们可以找到具有最高基础ASCII值的字符。这是指向an ASCII table的链接,因此您可以检查自己哪个字符对应于哪个值。
在int
我们再次执行相同操作,我们将<{em} char
投回char
,然后可以打印出来。
如另一个答案所示,您还可以将name.charAt(i) > greatestChar
彼此进行比较,例如- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
//put your code here
}
。后面发生的是这两个字符是根据它们的编码值进行比较的,正如我在上面的例子中手动向您展示的那样。
答案 1 :(得分:1)
您可以从此代码段开始
String name = "foobar";
char greatestChar = (char) name.chars().max().getAsInt();
// .chars() - returns a stream of int
// .max() - return the maximum element in the stream (which is an OptionalInt)
// .getAsInt() - return the value of the OptionalInt as int
System.out.println("greatestChar = " + greatestChar);
编辑使用Stream API的代码段。
class Event
{
public static void Call<TInstance>(TInstance instance, Action<TInstance> action)
where TInstance : IInterface
{
// invoke your instance
action(instance);
}
}
答案 2 :(得分:1)
这样的事情会起作用
String str = "someString";
char[] charArray = str.toCharArray();
int max = 0;
for(char c : charArray){
max = Math.max(max, (int) c);
}
System.out.println("Value: " + max);
System.out.println(Character.toString((char) max));
答案 3 :(得分:0)
在Java 8+中,使用单行程序可以非常简单地完成:
String str = "TestString"; // Expected result: 'S'
System.out.printf("Largest ASCII-value is: '%c'", str.chars().min().getAsInt());
或者如果你想打印它:
public static void main(String[] args) {
// TODO, add your application code
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter an integer: ");
int n = keyboard.nextInt();
double x = 0;
System.out.print("The total is: ");
for (int i = 1; i <= n; i++){
x = x+-(1.0/i);
}
System.out.print(+x);
}