簡體   English   中英

為什么總和在這里不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM