0

何が起こっているのか質問があります。コンパイルしようとすると、次のようなエラーが発生し続けます。

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Person.main(Person.java:38)

私が欲しいのは、ユーザーが年齢と名前を入力して「age」変数と「name」変数に格納し、それを下の文字列に出力できるようにすることだけです。そして、誰かが私のコードをクリーンアップするのを手伝ってくれるなら、それは害にはなりません。

import java.util.*; 
import java.io.*; 
import java.util.Scanner;

public class Person 

{

public static void main(String[]args) 

    {

    int age;
    int name;

    Scanner scan = new Scanner(System.in);

    System.out.println("Enter in your age.");
    age = scan.nextInt();

     if (age < 18) 

     {
         System.out.println("So you're a kid, huh? That's fine.");
     } 

     else if (age >= 18)

     {
        System.out.println("Ah, and adult! Good.");
     }

     @SuppressWarnings("resource")
     Scanner in = new Scanner(System.in);

     System.out.println("Enter in your name");
     name = in.nextInt();

     System.out.println("So you're " + age + " years old and your name is " + name);


}
}
4

7 に答える 7

7

問題

 int name; //Name should be of type String
 ...
 System.out.println("Enter in your name");
 name = in.nextInt(); //It doesn't handle the string since your using `nextInt`

解決

 String name;
 ...
 System.out.println("Enter in your name");
 name = in.nextLine();
于 2013-03-06T14:15:52.177 に答える
1

名前が整数なのはなぜですか?int name;

名前の入力に英字を使用していると思われます...そしてこの行で例外が発生しています:name = in.nextInt();

name 整数であってはなりません。文字列である必要があります。

したがってstring name;name = in.nextLine();

于 2013-03-06T14:15:15.483 に答える
0

これは、プログラムが整数ではない整数として値を読み取ろうとしたことを意味します。

使用する場合name = in.nextInt();

string.notintである必要があります

于 2013-03-06T14:16:19.787 に答える
0

スレッド「メイン」の例外java.util.Scanner.throwFor(不明なソース)でのjava.util.InputMismatchException

このタイプのエラーが発生した理由を説明しましょう。名前変数をintとして定義しましたが、コンソールでは 入力として文字列を指定します。したがって、コンパイラはInputMismatchExceptionとしてエラーをスローします。名前を文字列として変数にする方が良いです:)

于 2021-10-27T17:31:40.947 に答える
0

修正されたコード:

import java.util.*;  
import java.io.*; 

public class Person  { 
    public static void main(String[]args)  {
        int age;
        String name;

        Scanner scan = new Scanner(System.in);

        System.out.println("Enter in your age.");
        age = scan.nextInt();//for Number input 
        System.out.println("Enter in your name");
        name = scan.next();//for String Input 

        if (age < 18) 
        {
             System.out.println("So you're a kid, huh? That's fine.");
        } 

        else if (age >= 18)
        {
            System.out.println("Ah, and adult! Good.");
        }

        System.out.println("So you're " + age + " years old and your name is " + name);

    } 
}
于 2021-10-29T06:58:24.873 に答える
-1

name = in.nextInt(); ユーザー名が必要だったので、明らかに文字列型になるので、 name = in.next()またはname = in.nextLine( )のいずれかを使用します。私はそれが今うまくいくことを願っています。

于 2020-08-19T09:49:24.170 に答える
-2
import java.util.*;
class Employe
{
    private int id;
    private String name;
    Employe(int id,String name)
    {
        this.id=id;
        this.name=name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
public class Quarantine {
public static void main(String[] args) {
    Employe empList[]=new Employe[2];
    Scanner sc=new Scanner(System.in);
    for(int index=0;index<empList.length;index++) {
    int id=sc.nextInt();
    String name=sc.nextLine(); 
    empList[index]=new Employe(id,name);
    }
    for(int index=0;index<empList.length;index++) {
        System.out.println(empList[index].getId()+" "+empList[index].getName());
        }}
}

入力を1とすると、

両方とも文字と見なされるため、エラーが表示されます

私は124、実行として入力を与える必要があります

于 2020-04-23T11:49:16.177 に答える