我正在学习Java中的类和构造函数.我在一个示例程序中乱用代码,似乎无法弄清楚到底发生了什么.
这段代码不会编译对我来说有意义:
class Line {
Point start;
Point end;
Line(final Point start, final Point end) {
this.start = new Point(start);
this.end = new Point(end);
start = new Point(0.4, 0.4);
}...
Run Code Online (Sandbox Code Playgroud)
我试图通过调用Point对象的构造函数将原始的起始点对象引用分配给另一个Point对象.final关键字与此冲突.
但是当我从Point start参数中删除final关键字时......
class Line {
Point start;
Point end;
Line(Point start, final Point end) {
this.start = new Point(start);
this.end = new Point(end);
start = new Point(0.4, 0.4);
}
Run Code Online (Sandbox Code Playgroud)
它似乎没有实际更改引用,传递给Line构造函数的Point对象似乎仍然指向原始对象,并且由Line构造函数的代码保持不变.什么给出了什么?这是否与引用的'start'在Line构造函数的作用域中是本地的这一事实有关?
我一直坐在这里几个小时,试图在Eclipse的Android项目中使用这个github项目.我以前从未成功从github导入过任何东西.我已经阅读了我能找到的所有内容,并且尽可能地选择了所有选项并完全用尽了我的耐心.
有人可以一步一步地列出这个特定项目的程序,这样我最终可以在XML中使用它,就像作者描述的那样:
<com.polites.android.GestureImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/image"
gesture-image:min-scale="0.1"
gesture-image:max-scale="10.0"
gesture-image:strict="false"/>
Run Code Online (Sandbox Code Playgroud)
链接是https://github.com/jasonpolites/gesture-imageview
我会永远感激.
我正在读一本关于Java的书,我们正在从一个频道读到一个ByteBuffer.我找到了作者构造while循环奇数的方式:
try (FileChannel inCh = (FileChannel) Files.newByteChannel(file)) {
ByteBuffer lengthBuf = ByteBuffer.allocate(8);
int strLength = 0;
ByteBuffer[] buffers = { null, ByteBuffer.allocate(8) };
while(true) {
if(inCh.read(lengthBuf) == -1)
break;
lengthBuf.flip();
strLength = (int)lengthBuf.getDouble();
buffers[0] = ByteBuffer.allocate(2*strLength);
if(inCh.read(buffers) == -1) {
System.err.println("EOF found reading ht eprime string.");
break;
}
System.out.printf("String length: %3s String: %-12s Binary Value: %3d%n", strLength,
((ByteBuffer) (buffers[0].flip())).asCharBuffer().toString(),
((ByteBuffer)buffers[1].flip()).getLong());
lengthBuf.clear();
buffers[1].clear();
}
System.out.println("\nEOF reached.");
} catch (IOException e) {
我试过这样的:
while(inCh.read(lengthBuf) != -1) {
Run Code Online (Sandbox Code Playgroud)
它的工作方式相同.是否会有一个实际或代码清晰的原因作者会像他一样写出来?
我创建了一个扩展ImageView的自定义视图.我的自定义视图提供了一种方法showError(int),我可以在其中传递资源ID,该资源ID应显示为图像视图内容.如果我可以传递简单的颜色资源ID或可绘制的资源ID,那将是很好的.
我的问题是:如何确定传递的资源ID是Drawable还是Color?
我目前的做法是这样的:
class MyImageView extends ImageView{
public void showError(int resId){
try{
int color = getResources().getColor(resId);
setImageDrawable(new ColorDrawable(color));
}catch(NotFoundException e){
// it was not a Color resource so it must be a drawable
setImageDrawable(getResources().getDrawable(resId));
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样做安全吗?我的假设是,资源ID真的很独特.我的意思是在R.drawable或R.color中不是唯一的,但在完全独特R
所以没有
R.drawable.foo_drawable = 1;
R.color.foo_color = 1;
Run Code Online (Sandbox Code Playgroud)
是否正确将id 1分配给其中一个资源而不是两者都分配?
当我更新服务工作人员时,我关闭并重新打开页面,我得到控制台日志,表明新的服务工作人员已安装并激活,并且旧的缓存已被删除。但是,列出的要添加到缓存的文件不会再次从服务器获取,它们是几小时前的过时版本。如果不清除 Chrome 开发工具中的存储空间,则无法更新文件。
安装新版本时,如何让我的服务工作人员使用新文件填充其缓存?
例如,当 Service Worker 更新时,“stylesheet.css”仍然是旧版本:
let cacheName = "abc_web_v1_15";
self.addEventListener('install', (event) => {
console.log('[Service Worker] Install');
event.waitUntil(
caches.open(cacheName).then(function (cache) {
return cache.addAll([
"/".
"/stylesheet.css",
...
]);
})
);
});
self.addEventListener('fetch', (e) => {
e.respondWith(
caches.match(e.request).then(function (r) {
console.log('[Service Worker] Fetching resource: ' + cacheName + ' ' + e.request.url);
if (r) {
console.log(cacheName + ' returning cached ' + e.request);
return r;
} else {
console.log(cacheName + ' returning fetched ' + e.request);
return fetch(e.request);
}
}) …Run Code Online (Sandbox Code Playgroud) 在 SwiftUI 中,我们获得了onOpenURL(perform:)函数。但是,在 macOS 中,我们可以在 Finder 中选择多个文件,然后单击“打开方式”。如果我使用带有以下代码的应用程序打开这些文件:
@main
struct testURLMacApp: App {
var body: some Scene {
WindowGroup {
ContentView()
.onOpenURL { url in
print("RECEIVED \(url)")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
看来此功能对于多个文件无法正常工作。有时似乎会调用一次执行闭包,或者有时如果幸运的话最多可以连续调用 2-3 次。有时它似乎会做一些奇怪的事情,例如打开重复的应用程序窗口。
有没有人找到解决方法,或者在 SwiftUI 应用程序的单个窗口中处理打开多个文件的正确方法?
编辑:这实际上是为了使现有的 iOS 应用程序能够在 Apple Silicon Mac 上运行。所以AppKit不可用。
我已经坚持这个问题很长一段时间了,当我在控制台中输入输入时它似乎工作正常,但是当提交时我的解决方案总是失败测试#3(你无法看到输入或输出是什么).问题在于蒂姆斯.这是问题所在:
问题很简单,作者懒得为它写一个声明!
输入
输入流包含一组整数Ai(0≤Ai≤1018).数字由任意数量的空格和换行符分隔.输入流的大小不超过256 KB.
产量
对于从最后一个到第一个的每个数字Ai,您应该输出其平方根.每个平方根应打印在一个单独的行中,小数点后至少有四位数.
输入:
1427 0
876652098643267843
5276538
Run Code Online (Sandbox Code Playgroud)
输出:
2297.0716
936297014.1164
0.0000
37.7757
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
using System;
using System.Collections.Generic;
using System.IO;
namespace ReverseRoot
{
class Program
{
static void Main(string[] args)
{
List<ulong> longs = new List<ulong>();
string current = "";
bool inNumber = false;
string input = Console.In.ReadToEnd();
for (int i = 0; i < input.Length; ++i)
{
char c = input[i];
if (inNumber && !char.IsDigit(c))
{
longs.Add(ulong.Parse(current));
inNumber = false;
current = ""; …Run Code Online (Sandbox Code Playgroud) 如果我复制一个指针,然后要求删除指向的分配是有效的C++,还是未定义?我没有从谷歌找到一个满意的答案.谢谢.
char* orig = new char[100];
char* copy = orig;
delete[] copy;
Run Code Online (Sandbox Code Playgroud) 我正在阅读算法复杂性文本的介绍,作者有几种不同语言的例子,我已经能够遵循这些例子.然后在关键时刻,他给我打了这个Ruby代码,这对我来说是希腊语.有人可以解释这段代码的作用吗?
b = []
n.times do
m = a[ 0 ]
mi = 0
a.each_with_index do |element, i|
if element < m
m = element
mi = i
end
end
a.delete_at( mi )
b << m
end
Run Code Online (Sandbox Code Playgroud) 我有一个预构建的静态库(.a)和它的源代码.我如何附加源代码以便在使用gdb在Eclipse中进行调试时可以逐步完成它?
p.77 K&R C表示以下程序的输出未定义,但当前版本的Xcode没有发出警告.目前的标准还没有定义吗?在C++中怎么样?Java和C#中类似程序的加分点.
#include <stdio.h>
int my_m()
{
static int n = 0;
static int m[] = { 42, 57 };
return n++ % 2 == 0 ? m[0] : m[1];
}
int main()
{
printf("%d" , my_m() - my_m());
return 0;
}
Run Code Online (Sandbox Code Playgroud) android ×3
c++ ×3
c ×2
eclipse ×2
java ×2
algorithm ×1
android-10.0 ×1
android-ndk ×1
c# ×1
constructor ×1
debugging ×1
final ×1
github ×1
javascript ×1
macos ×1
ruby ×1
square-root ×1
swift ×1
swiftui ×1