Хорошо, поэтому я работаю над программой java для моего колледжа, и теперь я провел много часов, пытаясь понять, что я делаю неправильно.Java Array/Program Issue
Моя программа ниже. Что нужно сделать, это преобразовать целое число в отдельные цифры, а затем добавить все. Он должен отображать исходный номер, отдельные цифры, а затем сумму.
Часть проекта: он должен принимать отрицательные цифры, а затем отображать положительные числа и сумму, однако с моим массивом он отображает -1 как первое число, когда вводится отрицательное число, и я НЕ МОЖЕТ для жизнь меня выясняет, как это исправить.
Пример: ввод -3456 заканчивается отображением -1, 3, 4, 5, 6 и суммой 17, которая, очевидно, неверна.
Любая помощь была бы чрезвычайно оценена, спасибо!
import java.util.*;
import javax.swing.JOptionPane; //import package for using dialog boxes
import java.util.Arrays; //import package for arrays
public class Project4
{
public static void main(String args[])
{
//declares and initialize variables sum & counter
int sum = 0;
int counter = 1;
//asks for integer input and stores as a string in numInput
String numInput = JOptionPane.showInputDialog(null, "Enter an integer: ", "User Input", JOptionPane.QUESTION_MESSAGE);
int input = Integer.parseInt(numInput);//parses the value of numInput as an integer and stores as input
int numLength = String.valueOf(input).length();//sets numLength as the length of input
int [] varArray = new int[numLength];//initilizes an array to match numLength
if(input == (-input))//tests for negative input value
{
input = (input * (-1));//corrects the negative input value
for (int i = 0; i < numLength; i++) //starts a for loop
{
String var = numInput.substring(i,counter);//stores the value of the number at the location between i and counter as var
int numVal = Character.getNumericValue(var.charAt(0));//sets numVal to the numeric value of the character at 0
varArray[i] = numVal;//saves the numVal to the array at position i
sum = sum + numVal;//adds the sum of the numbers as the loop goes
counter++;//increments the counter
}
}
else //starts alternate loop if input was not a negative value
{
for (int i = 0; i < numLength; i++)
{
String var = numInput.substring(i,counter);
int numVal = Character.getNumericValue(var.charAt(0));
varArray[i] = numVal;
sum = sum + numVal;
counter++;
}
}
JOptionPane.showMessageDialog(null, "The Digits of Integer Entered " + input + " are: " + Arrays.toString(varArray).replace("[", "").replace("]", "") + "\nThe sum is: " + sum, "NUMBERS", JOptionPane.INFORMATION_MESSAGE);
System.exit(0); //exits program and is required when using GUI
}
}
После 'input = -input;' (а не умножения на -1) у вас есть неотрицательное число. Поэтому не обязательно дублировать код (если вы отредактируете строку numInput). – laune
Если вам не нужно хранить цифры в массиве, предпочтительным является * арифметическое вычисление суммы цифр. – laune