java - 声明输入流

标签 java android

我正在学习 android,并且是 Java 新手,但对编程并不陌生(使用 Eclipse)。我正在尝试在方法中执行这样的示例代码:

private void dummy() {
    try {
        URL url = new URL(quakeFeed);
        URLConnection connection;
        connection = url.openConnection();
        HttpURLConnection httpconnection = (HttpURLConnection)connection;
        int responseCode = httpconnection.getResponseCode();
        if(responseCode == HttpURLConnection.HTTP_OK)
            InputStream inp = new BufferedInputStream(httpconnection.getInputStream());
    }
...
}

假设定义了所有其他语法和变量。我收到以下错误:

InputStream` cannot be resolved to a variable.

即使在导入java.io.InputStream;之后这仍然很奇怪

如果我在方法外部声明 InputStream ,则会出现错误,即

InputStream inp;
private void dummy() {
    try {
        URL url = new URL(quakeFeed);
        URLConnection connection;
        connection = url.openConnection();
        HttpURLConnection httpconnection = (HttpURLConnection)connection;
        int responseCode = httpconnection.getResponseCode();
        if(responseCode == HttpURLConnection.HTTP_OK)
        // Changed
            inp = new BufferedInputStream(httpconnection.getInputStream());
    }
    ...
}

我很好奇为什么 InputStream 的本地声明无法解析,但全局声明却解析了。

最佳答案

您的 if 语句后面跟着一个语句。变量的声明需要一个 block 。如果允许您在那里声明一个变量,它将没有可见的作用域并且没有任何作用。

这应该有效:

if(responseCode == HttpURLConnection.HTTP_OK)
{ /* Note the brace to start a block! */
  InputStream inp = new BufferedInputStream(httpconnection.getInputStream());
  /* Now use the stream within the block. */
  ...
}

关于java - 声明输入流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9346939/

相关文章:

java - 带邻接表的骑士巡回算法

java - 多线程 Java HTTP 服务器

java - 实用程序员的练习 26

java - PriorityQueue 仅迭代一半元素

android - 如何设置定时器每 n 分钟调用一个函数?

android sdk eclipse, samsung galaxy tab 2, 如何识别设备

java - 在java中,如何清除每个方法中的byte[]数组以保护值免受内存转储?

android - TabLayout 选项卡样式

java - Android 如果我使用 WebView.destroy() 可以稍后恢复吗?

java - 清理 HttpURLConnection 的正确方法