中易网

JAVA中求各位数的和,并输出各位数

答案:7  悬赏:20  
解决时间 2021-01-17 21:34
  • 提问者网友:杀手的诗
  • 2021-01-17 16:56
JAVA中求各位数的和,并输出各位数
最佳答案
  • 二级知识专家网友:玩家
  • 2021-01-17 17:42
package aa;

import java.util.Scanner;

public class aaa {

public static void main(String[] args) {
int a;
System.out.println("请输入任意整数");
Scanner q=new Scanner(System.in);
a=q.nextInt();
String b =String.valueOf ( a);
int i,s=0;char ch;//s为所求的和
for ( i = 0;i     ch = b.charAt(i);
    System.out.println(ch);
    //这部加入转换成整型相加 就可以了,否则是字符串相加
    s = s + Integer.parseInt(String.valueOf(ch)) ;  
}  
System.out.println("和为"+s);//输入123,返回结果为6
   }
}追问为什么 s = s + Integer.parseInt(String.valueOf(ch)) ;这句改成 s =s +(int) ch;不对呢???谢谢~~
另外问一句,你这个是什么软件啊??eclipse??追答第一:char字符集
OK,char类型在java中的是16位的,底层采用unicode编码保存。
提一点就是unicode编码是包含中文字符集的,普通英文字符使用还是使用ASCII编码。为了满足不同国家语言的需要,在ASCII编码的基础上衍生出了unicode编码.


回到这段程序:
比如ch='1';  此时如果使用(int) ch,看到的结果将是:49   ,这个值就是字符1,对应的ASCII编码的值,所以你世界使用(int) ch 强转,是取不到你想要的真正意义上的数字类型,而是字符编码值。
同理:ch=‘2’,对应的ASCII编码的值是:50;ch=‘3’,对应的ASCII编码的值是:51;


第二:(int)与Integer.parseInt()的比较
(int)与Integer.parseInt()的区别是什么呢? 
一:
1、int是基本的数据类型,直接存数值; 
2、Integer是int的封装类,是对象,用一个引用指向这个对象;
int 是前者而integer 是后者(也就是一个类);因此在类进行初始化时int类的变量初始为0.而Integer的变量则初始化为null.

二:
(int)是强制类型转换,比如double,float转int时就必须强制转换,由精度高到精度低。 
Integer.parseInt(),是把字符窜类型转换成整形,比如,String a="123";int b=Integer.parseInt(a); 




我们在使用String.valueOf(ch)这步骤,目的是为了将【字符型】转换成【字符串型】,再将【字符串】型的ch通过Integer.parseInt转为int值类型。




另外,我使用的开发工具是eclipse,但是显示给你的代码是直接用了百度的选择【编码语言】

全部回答
  • 1楼网友:夜余生
  • 2021-01-18 01:05
你没有把字符转换成数字,应该是s+=ch-'0';
  • 2楼网友:不如潦草
  • 2021-01-17 23:26
int i,s=0;char ch; \\s为所求的和 这一行中不用声明int型变量i
  • 3楼网友:旧脸谱
  • 2021-01-17 21:56
s=s+ch;这句中ch为char类型,s为int类型,求和时会将ch的ascll码与s相加。因此你应该把char转换成int再求和。
  • 4楼网友:想偏头吻你
  • 2021-01-17 20:21
System.out.print("请输入任意整数:");
int a=new Scanner(System.in).nextInt();
String aString=String.valueOf(a);
char[] charArray=aString.toCharArray();
int sum=0;
for(int i=0;i sum=sum+Integer.parseInt(String.valueOf(charArray[i]));
}
System.out.println(sum);
  • 5楼网友:轮獄道
  • 2021-01-17 19:00
额,有点复杂
  • 6楼网友:笑迎怀羞
  • 2021-01-17 18:44
public class aaa {
public static void main(String[] args) {
int a;
System.out.println("请输入任意整数");
Scanner q = new Scanner(System.in);
a = q.nextInt();
String b = String.valueOf(a);
int i, s = 0;
char ch = 0; // s为所求的和
for (i = 0; i < b.length(); i++) {
ch = b.charAt(i);
System.out.println(ch);
s = s + Integer.parseInt(String.valueOf(ch));
}
System.out.println("和为" + s);
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息