Java语言中的输入Scanner类和C语言中的输入函数scanf都是用来读取用户输入的数据的。然而,它们之间存在一些区别。

首先,Scanner类可以读取不同数据类型的输入,包括整数、浮点数、布尔值和字符串等。而scanf函数需要根据格式字符指定要读取的数据类型,这使得scanf函数比较难用,并且容易出错。

其次,Scanner类提供了更多的输入选项。例如,可以使用Scanner类的nextLine()方法读取整行输入,或使用nextDouble()方法读取含有小数点的输入。而scanf函数则不能做到这些。

另一个不同点是,Scanner类是面向对象的,它可以通过实例化对象的方式来使用。在使用Scanner类之前,需要先创建一个Scanner对象,然后调用该对象的方法来读取输入。而scanf函数则是一个函数,在使用之前不需要先创建任何对象。

下面是Java中使用Scanner类读取用户输入的示例代码:

import java.util.Scanner;

public class UserInputExample {

   public static void main(String[] args) {

      Scanner input = new Scanner(System.in);

      System.out.println("请输入你的姓名:");
      String name = input.nextLine();

      System.out.println("请输入你的年龄:");
      int age = input.nextInt();

      System.out.println("你的姓名是:" + name);
      System.out.println("你的年龄是:" + age);
   }
}

在上面的代码中,创建了一个Scanner对象,并调用了它的nextLine()和nextInt()方法来读取用户输入的姓名和年龄。最后,将这些输入输出到屏幕上。

而下面是C语言中使用scanf函数读取用户输入的示例代码:

#include <stdio.h>

int main() {

   char name[20];
   int age;

   printf("请输入你的姓名:");
   scanf("%s", name);

   printf("请输入你的年龄:");
   scanf("%d", &age);

   printf("你的姓名是:%s\n", name);
   printf("你的年龄是:%d\n", age);

   return 0;
}

在上面的代码中,使用了scanf函数来读取用户输入的姓名和年龄。需要注意的是,对于字符数组name,scanf函数并不知道它的长度,因此需要指定一个最大的长度(例如上面的20)。另外,在读取整数时,需要使用&符号来获取该变量的地址。最后,使用printf函数将这些输入输出到屏幕上。