Java负数不为';I don’我不能肯定
需要得到那个负数,从-2345迭代到2345,然后求和到14。我搞不懂的是,2 3 4 5变成了-2 3 4 5…我缺少语法??也许这只是一行代码或for语句Java负数不为';I don’我不能肯定,java,Java,需要得到那个负数,从-2345迭代到2345,然后求和到14。我搞不懂的是,2 3 4 5变成了-2 3 4 5…我缺少语法??也许这只是一行代码或for语句 import java.util.*; public class sumofNumbers{ static Scanner console = new Scanner(System.in); public static void main(String[] args){ int input; int sum =
import java.util.*;
public class sumofNumbers{
static Scanner console = new Scanner(System.in);
public static void main(String[] args){
int input;
int sum = 0;
int strnbr = 0;
int counter = 1;
String nbr = "";
System.out.print("enter a number: ");
input = console.nextInt();
if (input == (-input)) {
input = input * (-1);
nbr = String.valueOf(input);
strnbr = nbr.length();
System.out.print("the digits of " + input + " are: ");
for (int i = 0; i < strnbr; i++) {
String var = nbr.substring(i, counter);
int var1 = Character.getNumericValue(var.charAt(0));
System.out.print(var + " ");
sum = sum + var1;
counter++;
}
System.out.println();
System.out.println("the sum is: " + sum);
} else {
nbr = String.valueOf(input);
strnbr = nbr.length();
System.out.print("the digits of " + input + " are: ");
for (int i = 0; i < strnbr; i++) {
String var = nbr.substring(i, counter);
int var1 = Character.getNumericValue(var.charAt(0));
System.out.print(var + " ");
sum = sum + var1;
counter++;
}
System.err.println();
System.out.println("the sum is: " + sum);
}
import java.util.*;
公共类和数{
静态扫描仪控制台=新扫描仪(System.in);
公共静态void main(字符串[]args){
int输入;
整数和=0;
int strnbr=0;
int计数器=1;
字符串nbr=“”;
System.out.print(“输入一个数字:”);
input=console.nextInt();
如果(输入==(-input)){
输入=输入*(-1);
nbr=字符串.valueOf(输入);
strnbr=nbr.length();
系统输出打印(“输入+的数字为:”);
对于(int i=0;i
}
}替换以开头的代码
if (input == (-input)) {
与
System.out.print(“输入+的数字为:”);
输入=Math.abs(输入);
nbr=字符串.valueOf(输入);
strnbr=nbr.length();
对于(int i=0;i
并删除结束括号主要问题在于您的if语句:
if (input == (-input))
这永远不会是真的
这简化了代码,因此不会基于负数/正数重复两次。这本可以做得更好,但我想让你的大部分代码完好无损
System.out.print("enter a number: ");
int input = console.nextInt();
if (input < 0) {
input = input * (-1);
}
String nbr = String.valueOf(input);
int strnbr = nbr.length();
System.out.print("the digits of " + input + " are: ");
int sum = 0;
for (int i = 0; i < strnbr; i++) {
String var = nbr.substring(i, i + 1);
int var1 = Character.getNumericValue(var.charAt(0));
System.out.print(var + " ");
sum = sum + var1;
}
System.out.println();
System.out.println("the sum is: " + sum);
System.out.print(“输入一个数字:”);
int input=console.nextInt();
如果(输入<0){
输入=输入*(-1);
}
字符串nbr=字符串.valueOf(输入);
int strnbr=nbr.length();
系统输出打印(“输入+的数字为:”);
整数和=0;
对于(int i=0;i
对代码的注释:
只能对if(input==(-input))
和0
为真,这两种情况您可能不关心。看起来您的意思是Integer.MIN\u值
if(输入<0)
最好写成input=input*(-1)
input=-input
- 通过以上操作,
和if
块变得相同,因此您只需要else
来执行if
input=-input
您甚至可以在不使用
的情况下通过始终执行if
来完成此操作input=Math.abs(input)
计数器是不必要的。您应该使用
,因为这才是您真正的意思子字符串(i,i+1)
是写入substring(i,i+1)。charAt(0)
的缓慢方式charAt(i)
- 要迭代字符串的所有字符,可以调用
并使用增强的tocharray()
循环for
- 在
中,无论print(var+“”)
是一个一位的var
、一个带数字的字符串
还是一个带数字的char
,都无关紧要。结果是一样的int
- 由于
只包含字符nbr
到'0'
,'9'
是表示字符。getNumericValue(ch)
的缓慢方式ch-'0'
可以缩短为sum=sum+digit
sum+=digit
- 不要打印到
系统。错误
- Java命名惯例规定类名应该以大写字母开头
- 不要预先声明变量。在需要它们的地方声明它们。这通常也有助于缩小其范围
public class SumOfNumbers {
static Scanner console = new Scanner(System.in);
public static void main(String[] args){
System.out.print("enter a number: ");
int input = console.nextInt();
System.out.print("the digits of " + input + " are: ");
String nbr = String.valueOf(Math.abs(input));
int sum = 0;
for (char ch : nbr.toCharArray()) {
System.out.print(ch + " ");
sum += ch - '0';
}
System.out.println();
System.out.println("the sum is: " + sum);
}
}
样本输出:
输入一个数字:-2345
-2345的数字是:2 3 4 5
总数是:14
如果(input==(-input))是可能的,你怎么期望呢?从技术上讲,input
可以是零或整数.MIN_值
。我刚刚注意到…为什么不直接使用Math.abs,然后,您的逻辑将是相同的输入,在本例中为-2345,并且必须显示为负数,就像输入一样,但间隔数字必须从数字中删除负数。这对我来说毫无意义。当我从输入中删除-时,我得到了带空格的正确答案,但输入的第一个数字-2345显示为2345。无法使用Math.abs(输入)因为这两个数字都是负数或正数…特里迪无法理解您的评论,所以变量设置中的求和和和平均值在哪里?对不起,我以为您有一些编程经验。我已经更新了我的答案。在Math.abs()之前缺少=
——<代码>子字符串(i,计数器).charAt(0)
(简称)与n相同
public class SumOfNumbers {
static Scanner console = new Scanner(System.in);
public static void main(String[] args){
System.out.print("enter a number: ");
int input = console.nextInt();
System.out.print("the digits of " + input + " are: ");
String nbr = String.valueOf(Math.abs(input));
int sum = 0;
for (char ch : nbr.toCharArray()) {
System.out.print(ch + " ");
sum += ch - '0';
}
System.out.println();
System.out.println("the sum is: " + sum);
}
}