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,但是显示给你的代码是直接用了百度的选择【编码语言】
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
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);
int a=new Scanner(System.in).nextInt();
String aString=String.valueOf(a);
char[] charArray=aString.toCharArray();
int sum=0;
for(int i=0;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);
}
}
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);
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息