[英]Why sum doesn't work here?
在我最后一個問題之后,我還有另一個基本問題。 我希望這些問題不會使任何人煩惱,因為它們非常基礎。 首先,我將名稱作為輸入,然后將其更改為整數,然后將它們求和並將其放在方程中,該總和不起作用
謝謝您的時間和幫助。
package loveindex;
import java.util.Scanner;
import java.lang.Math;
public class LoveIndex {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Testing Scanner, write something: ");
String testi = scan.nextLine();
testi = testi.toUpperCase();
char[] ascii1 = testi.toCharArray();
for(char ch:ascii1){
// System.out.println((int)ch+" ");
int[] a = {(int)ch};
int all = IntStream.of(a).sum(); // >>> here it shows an error and the quick fix as always is just a bigger mess ...
System.out.println("The sum is " + a);
}
System.out.println("Testing Scanner, write something: ");
String testi2 = scan.nextLine();
testi2 = testi2.toUpperCase();
char[] ascii2 = testi2.toCharArray();
for(char ch:ascii2){
System.out.println((int)ch+" ");
}
scan.close();
}
}
您是否正在嘗試這樣做?
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Testing Scanner, write something: ");
String testi = scan.nextLine();
testi = testi.toUpperCase();
char[] ascii1 = testi.toCharArray();
int sum = 0;
for (char ch : ascii1) {
sum += ch;
}
System.out.println("Sum: " + sum);
scan.close();
}
根據要求,提供持續輸入的示例:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Testing Scanner, write something: ");
while (scan.hasNext()) {
System.out.println("Testing Scanner, write something: ");
String testi = scan.nextLine();
testi = testi.toUpperCase();
char[] ascii1 = testi.toCharArray();
int sum = 0;
for (char ch : ascii1) {
sum += ch;
}
System.out.println("Sum: " + sum);
}
scan.close();
}
您在聲明變量后立即聲明它。 同樣,在將char強制轉換為int時,也不需要將int [] a聲明為數組。 我將int移到for循環的外部,並將其初始化為0。然后將系統打印的總和也移到for循環的外部。
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Testing Scanner, write something: ");
String testi = scan.nextLine();
testi = testi.toUpperCase();
char[] ascii1 = testi.toCharArray();
int a = 0;
for(char ch:ascii1){
// System.out.println((int)ch+" ");
a += (int)ch;
}
System.out.println("The sum is " + a);
System.out.println("Testing Scanner, write something: ");
String testi2 = scan.nextLine();
testi2 = testi2.toUpperCase();
char[] ascii2 = testi2.toCharArray();
for(char ch:ascii2){
System.out.println((int)ch + " ");
}
scan.close();
}
}
即使您使用Java 8進行編譯,此代碼也沒有意義:
char[] ascii1 = testi.toCharArray();
for(char ch:ascii1){
// System.out.println((int)ch+" ");
int[] a = {(int)ch};
int all = IntStream.of(a).sum(); // >>> here it shows an error and the quick fix as always is just a bigger mess ...
System.out.println("The sum is " + a);
}
對於輸入String的每個字符,您正在創建一個轉換為int的單個字符的數組,然后計算該單個int的總和。
相反,您可能希望將所有字符加在一起:
char[] ascii1 = testi.toCharArray();
int sum = 0;
for(char ch:ascii1){
sum += ch;
}
System.out.println("The sum is " + sum);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.