Java程序在字符串中查找最大的ascii字符

时间:2016-02-11 22:44:19

标签: java

您好我需要创建一个程序,让用户输入一个名称(例如)并在字符串中找到最大值ascii字符,然后将其输出给用户。我已经开始了,但我不确定在哪里继续。谢谢你的帮助。

System.out.println("Enter your name: ");
String name = input.nextLine();
char ch = ' ';
int i;

for (i = 0; i < name.length(); i++)
{

}

4 个答案:

答案 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);
}

https://repo1.maven.org/maven2/