数値が読み込める時は、それを読み込む。
数値が読み込めない時は、文字列を読み込んで、それが "exit" かどうか判定する。
Java
1import java.util.Scanner;
2
3class Main {
4 public static void main(String[] args) {
5 Scanner sc = new Scanner(System.in);
6 int[] n = new int[100];
7 int i, sum = 0;
8 for (i = 0; i < n.length; i++) {
9 System.out.println("整数を入力");
10 if (sc.hasNextInt())
11 sum += n[i] = sc.nextInt();
12 else {
13 String str = sc.next();
14 if (str.equals("exit"))
15 System.out.println(sum);
16 else
17 System.out.println("input error");
18 break;
19 }
20 }
21 }
22}
追記
質問にコードが追記されしたが、自分の書いたコードの各行の意味を理解していますか?
「配列に格納するのはできますが」って言っているのに、配列には格納していません。
String str = sc.nextLine();
で str に入る文字列は、"357" のような数字か、"exit" かです。
"exit" かどうか判定する前に Integer.parseInt(str) を実行したらダメなことが分かりませんか?
数字だったとしても、それを sum に入れていいんですか?
Scanner の hasNextInt や next を使わずに nextLine と Integer.parseInt を
使いたければ、次のようにすればよいでしょう。
Java
1import java.util.Scanner;
2
3class Main {
4 public static void main(String[] args) {
5 Scanner sc = new Scanner(System.in);
6 int[] n = new int[100];
7 int sum = 0;
8 for (int i = 0; i < n.length; i++) {
9 System.out.println("整数を入力");
10 String str = sc.nextLine(); // 文字列として入力
11 if (str.equals("exit")) break; // "exit" ならループを抜ける
12 n[i] = Integer.parseInt(str); // 数値に変換し配列に格納
13 sum += n[i]; // 合計値の更新
14 }
15 System.out.println(sum);
16 }
17}