0

我正在编写一个代码,它将采用输入的数字并只添加偶数位置的值。

例如:

如果用户输入 53429,则偶数位置的总和为 5。

我的问题是我正在尝试将偶数位置的字符串转换回整数并将它们加在一起。这就是我所拥有的

当我尝试将字符串解析为整数时,我不断收到错误消息。

    找不到标志
    符号:方法 parseInt(java.lang.String)
    位置:整数类

代码:

import java.util.Scanner;


public class NumberSums { 
    public static void main(String [] args) { 

        Scanner keyboard=new Scanner(System.in); 
        System.out.print("Enter a number: "); 
        String x=keyboard.next(); 

        String s1 = x; 
        int length = s1.length(); 

        if (length<5) { 
            System.out.println("Invalid value"); 
            System.exit(0); 
        } 

        if (length>5) { 
            System.out.println("Invalid value"); 
            System.exit(0); 
        } 

        String s2 = s1.substring(0,1); 
        String s3 = s1.substring(1,2);
        String s4 = s1.substring(2,3); 
        String s5 = s1.substring(3,4);
        String s6 = s1.substring(4,5);

        int a = Integer.parseInt(s3);
        //int b = Integer.parseInt(s5);

        //sum = (a + b);

        System.out.println("The sum of all even positions is " + sum); 
    }
}
4

4 回答 4

6

我敢打赌你有一个名为 的类Integer,Java 正试图使用​​它而不是java.lang.Integer.

重命名您的课程,或java.lang.Integer.parseInt(s3)改用。

于 2013-09-23T18:33:42.723 回答
2

在字符串中添加甚至放置的字符的代码。

 String str="1234567";
        int sum=0;
        for(int i=1;i<str.length();i=i+2){
            sum+=(str.charAt(i)-'0');
        }
        System.out.println(sum);

我们也可以从键盘开始计算:

    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Please enter number : ");
    String number=null;
    try{
        number = reader.readLine();
    } 
    catch (IOException e) {
        e.printStackTrace();
        throw e;
    }
    int sum=0;
    for(int i=1;i<number.length();i=i+2){
        sum+=(number.charAt(i)-'0');
    }
    System.out.println(sum);
于 2013-09-23T18:23:19.167 回答
1

我运行了该程序,它运行良好...如果您取消注释行int bsum = (a + b);. 但是,您必须声明sum变量,即int sum = (a + b);

你在运行什么JDK?您描述的错误只会Integer.parseInt(String foo);在不存在的情况下发生,除非它至少从 Java 1.4 开始就存在,所以我不确定您为什么找不到它;除非您Integer在同一个包中定义了另一个类,这可能会使编译器感到困惑。

这是完整的程序,包括导入(这可能是问题,如果您要导入不同的Integerthan java.lang.Integer),修复变量声明并删除不必要的代码,修复缩进和添加Scanner.close()语句:

import java.util.Scanner;

public class Test {
    public static void main(String [] args) 
    { 
        Scanner keyboard=new Scanner(System.in); 
        System.out.print("Enter a number: "); 
        String x=keyboard.next(); 

        String s1 = x; 
        int length = s1.length(); 

        if(length != 5) 
        { 
            System.out.println("Invalid value"); 
            System.exit(0); 
        } 

        String s3 = s1.substring(1,2);
        String s5 = s1.substring(3,4);

        int a = Integer.parseInt(s3);
        int b = Integer.parseInt(s5);

        int sum = (a + b);

        System.out.println("The sum of all even positions is " + sum); 

        keyboard.close();
    }
}
于 2013-09-23T18:23:41.867 回答
0

修改后的代码。试着理解它。

import java.util.Scanner;


public class EvenPos {

public static void main(String [] args) 
{ 

Scanner keyboard=new Scanner(System.in); 
System.out.print("Enter a number: "); 
String x=keyboard.next(); 

String s1 = x; 
int length = s1.length(); 

if(length<5) { 
    System.out.println("Invalid value"); 
    System.exit(0); 
    } 

if(length>5) { 
    System.out.println("Invalid value"); 
    System.exit(0); 
    } 

else{

char a = s1.charAt(1);
char b = s1.charAt(3);
int q = Character.getNumericValue(a); //Convert Char to Integer
int z = Character.getNumericValue(b); // //Convert Char to Integer

int sum = 0;
if (q % 2 == 0 && z % 2 == 0){ //If both even, then.....
    sum = q+z;
    System.out.println("Your sum: " + sum);
}
else{
    System.out.println("No even Number found at even POS");
}

}

} }

于 2013-09-23T18:43:45.573 回答