查找任何给定长度的仅数字字符串中的最高和最低位数

时间:2014-10-07 02:11:18

标签: java string

问题的措辞如下:

"要求用户输入一系列单个数字的数字,没有任何分隔。程序应显示字符串中的最高位和最低位。此外,程序应显示一个只包含偶数位的字符串和一个只包含奇数位的字符串。"

显然,我需要以某种方式转换输入字符串(让它称之为numberInput)或解析它的最高和最低整数,以及它内部的所有奇数和偶数整数。

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    String numberInput; // The variable of the string
    System.out.println("Enter any number of positive digits, not separated by anything: "); // prompt user
    numberInput = scan.next(); // read in the string

    int phraseLength = numberInput.length(); // get length of input string
    int middleIndex = phraseLength / 2; // find the middle index of input string

    String highestDigits, lowestDigits; //?? just guessing here
    int max, min; //?? made variables for highest value integer and lowest value integer
}

2 个答案:

答案 0 :(得分:0)

我认为你在这里寻找的是一个循环和text.charAt(index)。尝试在java中查找while / for循环的语法,并使用它们循环遍历字符串,将字符串中的每个char转换为int并进行比较。您可以跟踪当前min / max,并在检查字符串中的每个字符时根据需要更新它们。

一个例子是

int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for (counter=0;counter<phraselength;counter++) {
    int this_int = (int)numberInput.charAt(counter);
    if (this_int < min) {
        min = this_int;
    }
    if (this_int > max) {
        max = this_int;
    }
}

答案 1 :(得分:0)

由于这是一项明确的任务,可以通过很少的研究来解决,所以我这样展示我的投票

Java 8

<强>代码

    String s = "1237827";
    String[] sp = s.split("");

    int max = Arrays.stream(sp)
            .mapToInt(st -> Integer.parseInt(st)).max().getAsInt();

    int min = Arrays.stream(sp)
            .mapToInt(st -> Integer.parseInt(st)).min().getAsInt();

    System.out.println("The maximum number is " + max);
    System.out.println("The minmum number is " + min);

    System.out.print("The even numbers list is:");
    Arrays.stream(sp)
            .mapToInt(st -> Integer.parseInt(st))
            .filter(i -> i % 2 == 0)
            .forEach(i -> System.out.print(i + " "));
    System.out.println("");
    System.out.print("The odd numbers list is:");
    Arrays.stream(sp)
            .mapToInt(st -> Integer.parseInt(st))
            .filter(i -> i % 2 != 0)
            .forEach(i -> System.out.print(i + " "));
   IntSummaryStatistics stats = Arrays.stream(sp)
            .mapToInt(st -> Integer.parseInt(st))
            .summaryStatistics();
   System.out.println(stats);

<强>输出

The maximum number is 8
The minmum number is 1
The even numbers list is:2 8 2 
The odd numbers list is:1 3 7 7
IntSummaryStatistics{count=7, sum=30, min=1, average=4.285714, max=8}