UVa 在线判断 100 上的 JAVA 运行时错误



我正在尝试通过JAVA解决这个问题。但是当我将输入加载为字符串并解析为 Int...(代码被注释掉了)

然后我使用 nextInt() 方法来加载输入,它不再显示运行时错误。

将输出修改为

System.out.println(arr3[0]+" "+arr3[1]+" "+now);

结果被接受。

所以。。。我以前的代码有什么问题?在我的电脑上似乎还可以,但UVA在线判断中总是运行时错误。谢谢大家~

import java.io.*;
import java.util.*;
import java.lang.*;
class Main {
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in) ;
    while(sc.hasNext()){
        int now = 0;
    //  String str = sc.nextLine();
    //  String[] arr = str.split(" ");
    //  arr2[1] = Integer.parseInt(arr[1]);
    //  arr2[0] = Integer.parseInt(arr[0]);
        int[] arr2 = new int[2];
        int[] arr = new int[2];
        arr[0] = arr2[0] = sc.nextInt();
        arr[1] = arr2[1] = sc.nextInt();    

        int tmp;
        if(arr2[0]>arr2[1]){
            tmp = arr2[0];
            arr2[0] =arr2[1];
            arr2[1] = tmp;  
        }
        for (int i = arr2[0]; i < arr2[1]+1; i++) {
            long a = i;
            int count = 0;
            while (a != 1) {
                count++;
                if ((a % 2) != 0) 
                    a = 3 * a + 1;
                else 
                    a = a / 2;
            }
            count++;
            if (count > now) 
            now = count;
        }
        System.out.println(" "+now);
    }
}

Scanner.next…跳过不同类型的空格,而str.split(" ")只跳过一个空格。此外,Scanner.nextInt执行不同的转换,例如接受本地化数字,而Integer.parseInt只接受一种格式。这取决于输入数据是否有所不同。

最新更新