该程序应该给出最长的升序。

因此,例如,如果我输入“ 12134707”,则应该给出输出= 1347,但是它给出的是12 ...这绝对不是最长的时间。我在想什么或做错了什么?

import java.util.Scanner;
public class Ascending
{

public static void main(String args[]){

    System.out.print("Enter a number = ");

    Scanner in = new Scanner(System.in);
    String n = in.nextLine();

    //print soluton
    System.out.println("output = " + itsAscending(n));
}

public static String itsAscending(String n) {
    int length = n.length();

    String maxlongest = "";


    for(int i = 1; i < length; i++) {

        char first = n.charAt(i-1);
        char second = n.charAt(i);
        char next = n.charAt(i+1);
        int f = (int)(first - 48);
        int s = (int)(second - 48);
        int nx = (int)(next - 48);

        String longest = "";

        int max = 0;


        //test to find the ascending order
        if (f<s){

            longest = longest + f;

            if(n.length()>2){

                if(f<s){
                    longest = longest + s;
                    length = longest.length();
                    i++;
                }
                else{
                    i++;
                    continue;
                }
            }

            //test to find the longest string
            for (i=1; i<length; i++){
                if (length > max){
                    max = length;
                    maxlongest = longest;
                    return maxlongest;
                }
                else {
                    return maxlongest;
                }
            }
        }
    }
    return maxlongest;
 }
}

最佳答案

嘿,您在很多地方都弄乱了代码和逻辑。您正在与for循环中的length变量进行比较并对其进行修改。您的第二个for循环也位于第一个循环中。我认为这是一个错误。重新开始,重新遍历您的逻辑和变量。.您的长度变量和i变量在多个位置使用,而应该使用相同的值。

附言:我知道它是硬件作业:D

07-24 19:40